DocumentazioneL’endpoint dell’assistente
I tuoi assistenti
L’endpoint dell’assistente
Una sola richiesta in formato OpenAI. Il tuo assistente risponde con le sue istruzioni e la sua memoria, in streaming.
Chiamare l’assistente
POST /v1/agents/chat/completions Un turno di conversazione completo.
Indica l’assistente con assistantId. Per continuare la stessa conversazione, invia invece threadId.
curl -N https://api.learnya.ai/v1/agents/chat/completions \
-H "Authorization: Bearer $LEARNYA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assistantId": "ASSISTANT_ID",
"stream": true,
"messages": [
{"role": "user", "content": "Where is my invoice?"}
]
}'with requests.post(
f"{API}/agents/chat/completions",
headers=HEADERS,
json={
"assistantId": assistant["id"],
"stream": True,
"messages": [
{"role": "user", "content": "Where is my invoice?"}
],
},
stream=True,
) as response:
for line in response.iter_lines(decode_unicode=True):
if line.startswith("data: ") and line != "data: [DONE]":
chunk = json.loads(line[6:])
delta = chunk["choices"][0]["delta"].get("content")
print(delta or "", end="", flush=True)const response = await fetch(`${API}/agents/chat/completions`, {
method: "POST",
headers,
body: JSON.stringify({
assistantId: assistant.id,
stream: true,
messages: [
{ role: "user", content: "Where is my invoice?" },
],
}),
})
const decoder = new TextDecoder()
for await (const part of response.body) {
for (const line of decoder.decode(part).split("\n")) {
if (!line.startsWith("data: ")) continue
if (line === "data: [DONE]") continue
const chunk = JSON.parse(line.slice(6))
process.stdout.write(chunk.choices[0]?.delta?.content ?? "")
}
}interface Chunk {
choices: { delta: { content?: string } }[]
}
const response = await fetch(`${API}/agents/chat/completions`, {
method: "POST",
headers,
body: JSON.stringify({
assistantId: assistant.id,
stream: true,
messages: [
{ role: "user", content: "Where is my invoice?" },
],
}),
})
const text = response.body!.pipeThrough(new TextDecoderStream())
for await (const part of text) {
for (const line of part.split("\n")) {
if (!line.startsWith("data: ")) continue
if (line === "data: [DONE]") continue
const chunk = JSON.parse(line.slice(6)) as Chunk
process.stdout.write(chunk.choices[0]?.delta?.content ?? "")
}
}La risposta
| Modalità | Cosa ricevi |
|---|---|
| In streaming | Frammenti chat.completion.chunk in formato OpenAI, poi [DONE] |
| Senza streaming | Una risposta immediata senza testo, con finish_reason a queued e gli ID del thread, del messaggio e dell’esecuzione da seguire |
Cosa cambia rispetto a un modello da solo
| Oggetto | Con un assistente |
|---|---|
| Il campo model | Sceglie il modello di questa risposta, non l’assistente |
| Messaggi tool e immagini | Rifiutati: l’assistente chiama da sé i propri strumenti |
| Conteggio dei token | Una stima, e completion_tokens vale 0 |
| Accesso | Il token di accesso di una persona, non una chiave API |
Per un modello senza assistente, resta sulla conversazione semplice con una chiave API.