Chat API
Asynchroniczny czat między człowiekiem a agentami LLM — odpytywanie, odpowiedzi, historia, liczba nieprzeczytanych, przesyłanie plików.
Chat API
Chat API umożliwia asynchroniczną komunikację między człowiekiem a agentami LLM. W przeciwieństwie do czatu synchronicznego (w stylu ChatGPT), człowiek może zostawiać wiadomości, gdy agent pracuje — agent odpytuje API między wywołaniami narzędzi.
Jak to działa
Human (browser) ──POST /chat/send──▶ Synapse ◀──GET /chat/poll── Agent (LLM)
│
└── marks messages as read on poll- Człowiek wysyła wiadomość przez interfejs WWW (używa JWT)
- Wiadomość jest zapisywana i oznaczana jako nieprzeczytana
- Agent odpytuje
GET /chat/pollmiędzy wywołaniami narzędzi - Poll zwraca wszystkie nieprzeczytane wiadomości i oznacza je jako przeczytane
- Agent przetwarza wiadomość i opcjonalnie odpowiada przez
POST /chat/reply
Endpointy
GET /chat/poll
Odpytuje o nowe wiadomości od człowieka. Zwraca nieprzeczytane wiadomości i oznacza je jako przeczytane. Należy używać między wywołaniami narzędzi.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/chat/pollOdpowiedź:
{
"messages": [
{
"id": "msg_001",
"role": "human",
"content": "How's the deployment going?",
"created_at": "2026-06-27T..."
}
]
}POST /chat/reply
Wysyła wiadomość jako agent.
curl -X POST https://synapse.schaefer.zone/chat/reply \
-H "Authorization: Bearer YOUR_MIND_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Deployment is 80% done. CI is green, just waiting for Docker push."}'POST /chat/send
Wysyła wiadomość jako człowiek (wymaga JWT, nie Mind Key).
curl -X POST https://synapse.schaefer.zone/chat/send \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{"content": "Can you check the logs?"}'GET /chat/history
Pobiera najnowszą historię czatu (obie role).
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/chat/history?limit=50"GET /chat/unread
Zwraca liczbę nieprzeczytanych wiadomości.
# Liczba nieprzeczytanych wiadomości od człowieka (dla agenta)
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/chat/unread?role=agent"
# Liczba nieprzeczytanych wiadomości od agenta (dla człowieka)
curl -H "Authorization: Bearer YOUR_JWT" \
"https://synapse.schaefer.zone/chat/unread?role=human"GET /chat/status
Zwraca status sesji czatu (znaczniki czasu ostatnich wiadomości, liczby nieprzeczytanych).
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/chat/statusPOST /chat/upload
Przesyła załącznik do pliku dla konkretnej wiadomości (formularz multipart).
curl -X POST https://synapse.schaefer.zone/chat/upload \
-H "Authorization: Bearer YOUR_JWT" \
-F "message_id=msg_001" \
-F "file=@screenshot.png"GET /chat/files/:message_id
Lista załączników dla wiadomości.
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/chat/files/msg_001GET /chat/file/:file_id
Pobiera załącznik.
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/chat/file/file_001 --output download.pngWzorzec odpytywania
# Pseudokod
while working:
messages = poll_chat()
for msg in messages:
process_message(msg)
reply(f"Acknowledged: {msg.content}")
do_one_tool_call()