DocumentationLe point d’accès de l’assistant
Vos assistants
Le point d’accès de l’assistant
Une seule requête au format OpenAI. Votre assistant répond avec ses consignes et sa mémoire, en flux.
Sur cette page
Appeler l’assistant
POST /v1/agents/chat/completions Un tour de conversation complet.
Désignez l’assistant par assistantId. Pour continuer la même conversation, envoyez threadId à la place.
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 réponse
| Mode | Ce que vous recevez |
|---|---|
| En flux | Des morceaux chat.completion.chunk au format OpenAI, puis [DONE] |
| Sans flux | Une réponse immédiate sans texte, avec finish_reason à queued et les identifiants du fil, du message et de l’exécution à suivre |
Ce qui diffère d’un modèle seul
| Sujet | Avec un assistant |
|---|---|
| Le champ model | Il choisit le modèle de cette réponse, pas l’assistant |
| Messages tool et images | Refusés : l’assistant appelle lui-même ses outils |
| Décompte des jetons | Une estimation, et completion_tokens vaut 0 |
| Accès | Le jeton de connexion d’une personne, pas une clé d’API |
Pour un modèle sans assistant, gardez la conversation simple avec une clé d’API.