актуализация документации и manual теста
This commit is contained in:
parent
1b8efdb4a4
commit
8256453bbf
2 changed files with 14 additions and 36 deletions
41
README.md
41
README.md
|
|
@ -4,6 +4,11 @@ from lambda_agent_api import AgentApi
|
||||||
|
|
||||||
WebSocket API SDK для взаимодействия с AI-агентом.
|
WebSocket API SDK для взаимодействия с AI-агентом.
|
||||||
|
|
||||||
|
## Release Notes
|
||||||
|
# v1.1
|
||||||
|
- Добавлен параметр `chat_id` в конструктор `AgentAPI`. Нужен для разделения истории сообщений по чатам/веткам.
|
||||||
|
- `AgentAPI.connect()` вызывает `AgentBusyException`, если выбранный чат уже занят другим API клиентом.
|
||||||
|
|
||||||
## Установка
|
## Установка
|
||||||
В `master` всегда будет актуальная рабочая версия.
|
В `master` всегда будет актуальная рабочая версия.
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -14,42 +19,10 @@ pip install git+https://git.lambda.coredump.ru/platform/agent_api.git
|
||||||
|
|
||||||
## Быстрый старт (с использованием AgentApi)
|
## Быстрый старт (с использованием AgentApi)
|
||||||
|
|
||||||
```python
|
**Рабочий REPL пример: [tests/manual.py](tests/manual.py).**
|
||||||
import asyncio
|
|
||||||
|
|
||||||
from lambda_agent_api.agent_api import AgentApi
|
|
||||||
from lambda_agent_api.server import MsgEventTextChunk
|
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
## Предполагаемое управление подключениями
|
||||||
api = AgentApi("agent-1", "ws://localhost:8000/ws")
|
|
||||||
|
|
||||||
await api.connect()
|
|
||||||
try:
|
|
||||||
response = await api.send_message("Привет, агент!")
|
|
||||||
|
|
||||||
async for chunk in response:
|
|
||||||
if isinstance(chunk, MsgEventTextChunk):
|
|
||||||
print(chunk.text, end="", flush=True)
|
|
||||||
elif isinstance(chunk, MsgEventToolCallChunk):
|
|
||||||
print(f"Tool call started: {chunk.tool_name}")
|
|
||||||
elif isinstance(chunk, MsgEventToolResult):
|
|
||||||
print(f"Tool result: {chunk.result}")
|
|
||||||
elif isinstance(chunk, MsgEventCustomUpdate):
|
|
||||||
print(f"Progress update: {chunk.payload}")
|
|
||||||
elif isinstance(chunk, MsgEventEnd):
|
|
||||||
print(f"Generation ended, tokens used: {chunk.tokens_used}")
|
|
||||||
|
|
||||||
finally:
|
|
||||||
await api.close()
|
|
||||||
|
|
||||||
|
|
||||||
asyncio.run(main())
|
|
||||||
```
|
|
||||||
|
|
||||||
> `AgentApi.send_message()` возвращает стриминг-итерируемый объект, который может выдавать не только текстовые чанки, но и события инструментов (`MsgEventToolCallChunk`, `MsgEventToolResult`, `MsgEventCustomUpdate`) и финальный `MsgEventEnd`.
|
|
||||||
|
|
||||||
## Предполагаемое использование
|
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from lambda_agent_api.agent_api import AgentApi
|
from lambda_agent_api.agent_api import AgentApi
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from lambda_agent_api.agent_api import AgentApi
|
from lambda_agent_api.agent_api import AgentApi, AgentBusyException
|
||||||
from lambda_agent_api.server import MsgEventTextChunk, MsgEventToolCallChunk, MsgEventToolResult
|
from lambda_agent_api.server import MsgEventTextChunk, MsgEventToolCallChunk, MsgEventToolResult
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -10,7 +10,12 @@ async def main():
|
||||||
chat_id = input("Chat id: ") or 0
|
chat_id = input("Chat id: ") or 0
|
||||||
api = AgentApi("agent-1", "ws://localhost:8000/agent_ws/", chat_id=chat_id)
|
api = AgentApi("agent-1", "ws://localhost:8000/agent_ws/", chat_id=chat_id)
|
||||||
|
|
||||||
await api.connect()
|
try:
|
||||||
|
await api.connect()
|
||||||
|
except AgentBusyException:
|
||||||
|
print(f"Чат {chat_id} занят другим клиентом")
|
||||||
|
return
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
prompt = await asyncio.get_event_loop().run_in_executor(None, input, ">>> ")
|
prompt = await asyncio.get_event_loop().run_in_executor(None, input, ">>> ")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue