DocumentaçãoO endpoint do assistente
Os teus assistentes
O endpoint do assistente
Um único pedido no formato OpenAI. O teu assistente responde com as suas instruções e a sua memória, em fluxo.
Chamar o assistente
POST /v1/agents/chat/completions Uma interação completa da conversa.
Indica o assistente com assistantId. Para continuar a mesma conversa, envia threadId em vez disso.
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 ?? "")
}
}A resposta
| Modo | O que recebes |
|---|---|
| Em fluxo | Pedaços chat.completion.chunk no formato OpenAI, depois [DONE] |
| Sem fluxo | Uma resposta imediata sem texto, com finish_reason a queued e os identificadores da thread, da mensagem e da execução a acompanhar |
O que muda em relação a um modelo sozinho
| Assunto | Com um assistente |
|---|---|
| O campo model | Escolhe o modelo desta resposta, não o assistente |
| Mensagens tool e imagens | Recusados: o assistente chama ele próprio as suas ferramentas |
| Contagem de tokens | Uma estimativa, e completion_tokens vale 0 |
| Acesso | O token de acesso de uma pessoa, não uma chave de API |
Para um modelo sem assistente, mantém a conversa simples com uma chave de API.