Bygge agenter
BlixAI har alt du trenger for agentarbeid: tool calling, strømming og store kontekstvinduer — med dataene i Norge.
Agentprimitivene
En agent er i praksis en løkke: modellen tenker, kaller verktøy, får resultater tilbake, og fortsetter til oppgaven er løst. BlixAI støtter begge deler du trenger:
- Tool calling — modellen ber om funksjonskall via
finish_reason: "tool_calls", du utfører og sender resultatet tilbake somrole: "tool". - Strømming — SSE-delser, slik at agenten kan vise fremdrift (inkludert resonnering via
delta.reasoning).
Komplett agentløkke i Python
Et minimalt, kjørbart eksempel med OpenAI-SDK-et — bytt bare base_url og nøkkel:
import json
from openai import OpenAI
client = OpenAI(
base_url="https://models.blixai.com/v1",
api_key="sk-blix-din-nokkel-her",
)
TOOLS = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Hent været for en norsk by",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Bynavn, f.eks. Oslo"}
},
"required": ["city"],
},
},
}]
def get_weather(city: str) -> str:
# Erstatt med ekte integrasjon
return json.dumps({"city": city, "temp_c": 12, "condition": "lettskyet"})
def run_agent(question: str, max_turns: int = 5):
messages = [{"role": "user", "content": question}]
for _ in range(max_turns):
response = client.chat.completions.create(
model="Qwen/Qwen3.8-Flash-Next-FP8",
messages=messages,
tools=TOOLS,
max_tokens=2048,
)
msg = response.choices[0].message
if response.choices[0].finish_reason == "tool_calls":
messages.append(msg) # assistant-meldingen med tool_calls
for call in msg.tool_calls:
args = json.loads(call.function.arguments)
result = get_weather(**args)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
continue # ny runde med verktøyresultatene
return msg.content # ferdig svar
return "Agenten nådde tur-grensen."
print(run_agent("Hvordan er været i Oslo?"))
Løkken er bevisst enkel. I produksjon bør du legge til feilhåndtering per verktøykall, timeout og maks antall turer for å styre kostnader.
Rammeverk via base URL
De fleste agent-rammeverkene aksepterer OpenAI-kompatible endepunkter via miljøvariabler:
export OPENAI_BASE_URL="https://models.blixai.com/v1"
export OPENAI_API_KEY="sk-blix-din-nokkel-her"
Deretter peker du rammeverkets modellvalg mot en BlixAI-modell-ID:
| Rammeverk | Modellkonfigurasjon |
|---|---|
| LangGraph / LangChain | ChatOpenAI(model="Qwen/Qwen3.8-Flash-Next-FP8") leser OPENAI_BASE_URL |
| CrewAI | LLM(model="Qwen/Qwen3.8-Flash-Next-FP8", base_url="https://models.blixai.com/v1") |
| OpenAI Agents SDK | set_default_openai_client(client) med BlixAI-base-URL |
Resonneringsmodeller i agenter
- Budsjett: resonneringstokens kommer av
max_tokensog faktureres som utdata. For agent-tur der modellen både skal tenke og kalle verktøy: bruk 2048+. - Les
finish_reason:"tool_calls"betyr at verktøykall ligger klare — ikke vent påcontent. content: nuller normalt i verktøytur — selve «svaret» ertool_calls-lista.reasoning-feltet kan logges for feilsøking, men trengs ikke i agentlogikken.
Strømming i agent-UI
For chat-agenter med UI: strøm med stream=True og vis delta.content. Ignér delta.reasoning om du ikke vil vise tankerekken:
stream = client.chat.completions.create(
model="Qwen/Qwen3.8-Flash-Next-FP8",
messages=[{"role": "user", "content": "Skriv en kort oppsummering"}],
stream=True,
max_tokens=1024,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)
Agent-sjekkliste
- Sett
max_tokenstil 2048+ i turer med verktøy. - Send alltid verktøyresultatet tilbake med riktig
tool_call_id. - Begrens turlengde og ha en fallback for «agenten nårdde grensen».
- Logg
usageper tur — resonnering kan øke forbruket mer du tror. - Vurder personvern før du sender agentdata til verktøy-API-er.
Sist oppdatert: 19. september 2026