Agent Orchestrator
Оркестрация AI агентов с инструментами
Создавайте интеллектуальных агентов, способных выполнять сложные задачи с использованием инструментов, рабочих процессов и памяти сессий.
Агенты
Автономные AI-сущности
Инструменты
Кастомные функции
Workflows
DAG рабочие процессы
Память
Сохранение контекста
Создание агента
Агенты — это автономные сущности с системными инструкциями, набором инструментов и конфигурацией модели. Каждый агент может обрабатывать запросы пользователей, вызывать инструменты и сохранять контекст между сессиями.
1from coren import Coren23client = Coren()45# Создание агента для банковской поддержки6agent = client.agents.create(7 name="bank-support-agent",8 description="Агент поддержки клиентов банка",9 model="llama-3-70b",10 instructions="""Ты помощник службы поддержки банка.11Помогай клиентам с вопросами по счетам, картам и переводам.12Всегда проверяй авторизацию перед выдачей информации.13Отвечай вежливо и профессионально.""",14 tools=[15 {"type": "function", "name": "check_balance"},16 {"type": "function", "name": "get_transactions"},17 {"type": "function", "name": "transfer_funds"}18 ],19 memory={20 "type": "session",21 "max_messages": 50,22 "ttl_hours": 2423 }24)2526print(f"Агент создан: {agent.id}")
Регистрация инструментов
Инструменты позволяют агентам взаимодействовать с внешними системами: базами данных, API, файловой системой. Определите JSON Schema для параметров и укажите endpoint для вызова.
1# Регистрация инструмента проверки баланса2tool = client.agents.tools.create(3 agent_id=agent.id,4 tool={5 "type": "function",6 "function": {7 "name": "check_balance",8 "description": "Проверить баланс счета клиента",9 "parameters": {10 "type": "object",11 "properties": {12 "account_id": {13 "type": "string",14 "description": "Номер счета клиента"15 },16 "currency": {17 "type": "string",18 "enum": ["RUB", "USD", "EUR"],19 "default": "RUB"20 }21 },22 "required": ["account_id"]23 }24 }25 },26 endpoint="http://core-banking:8080/api/v1/accounts/balance",27 auth={28 "type": "service_account",29 "secret_name": "core-banking-token"30 }31)
Встроенные инструменты
rag_search— поиск по векторной базе знанийcode_interpreter— выполнение Python кодаsql_query— SQL запросы к базам данныхhttp_request— HTTP вызовы к внешним API
Выполнение агента
Запустите агента с входным сообщением. Агент автоматически определит, какие инструменты вызвать, и вернёт результат.
1# Запуск агента2execution = client.agents.run(3 agent_id=agent.id,4 session_id="session_user_12345", # Для сохранения контекста5 input="Какой у меня баланс на счете 40817810000000001234?"6)78# Ожидание результата9while execution.status in ["pending", "running"]:10 execution = client.agents.executions.get(execution.id)11 print(f"Статус: {execution.status}")1213# Вывод результата14print(f"Ответ: {execution.output}")15print(f"Вызванные инструменты: {execution.tool_calls}")1617# Пример ответа:18# Ответ: Баланс вашего счета 40817810000000001234 составляет 125,430.50 RUB.19# Вызванные инструменты: [{"name": "check_balance", "arguments": {"account_id": "40817810000000001234"}}]
Потоковый вывод
Для интерактивных приложений используйте streaming для получения ответа по мере генерации.
1# Потоковое выполнение агента2stream = client.agents.run(3 agent_id=agent.id,4 session_id="session_user_12345",5 input="Покажи последние 5 транзакций",6 stream=True7)89for event in stream:10 if event.type == "tool_call":11 print(f"[Вызов инструмента: {event.tool_name}]")12 elif event.type == "tool_result":13 print(f"[Результат получен]")14 elif event.type == "content":15 print(event.content, end="", flush=True)16 elif event.type == "done":17 print(f"\n[Завершено, токенов: {event.usage.total_tokens}]")
Рабочие процессы (Workflows)
Создавайте сложные многошаговые процессы с условной логикой, параллельным выполнением и обработкой ошибок.
1from coren.workflows import Workflow, Step, Condition23# Workflow для обработки заявки на кредит4workflow = Workflow(5 name="credit-application",6 steps=[7 Step(8 id="verify_identity",9 action="verify_client_identity",10 inputs={"client_id": "{{input.client_id}}"}11 ),12 Step(13 id="check_credit_score",14 action="get_credit_score",15 inputs={"inn": "{{steps.verify_identity.output.inn}}"},16 depends_on=["verify_identity"]17 ),18 Step(19 id="calculate_limit",20 action="calculate_credit_limit",21 inputs={22 "score": "{{steps.check_credit_score.output.score}}",23 "income": "{{input.monthly_income}}"24 },25 depends_on=["check_credit_score"],26 condition=Condition(27 field="{{steps.check_credit_score.output.score}}",28 operator="gte",29 value=60030 )31 ),32 Step(33 id="reject",34 action="send_rejection",35 inputs={"reason": "Недостаточный кредитный рейтинг"},36 depends_on=["check_credit_score"],37 condition=Condition(38 field="{{steps.check_credit_score.output.score}}",39 operator="lt",40 value=60041 )42 )43 ]44)4546# Создание агента с workflow47agent = client.agents.create(48 name="credit-processor",49 model="llama-3-70b",50 workflow=workflow51)
Последовательное выполнение
Шаги выполняются в порядке зависимостей (depends_on)
Параллельное выполнение
Независимые шаги выполняются одновременно
Условная логика
Ветвление на основе результатов предыдущих шагов
Обработка ошибок
Retry политики и fallback для каждого шага
Память сессий
Агенты могут сохранять контекст между запросами в рамках сессии. Это позволяет вести диалог и помнить предыдущие взаимодействия.
1# Первый запрос в сессии2response1 = client.agents.run(3 agent_id=agent.id,4 session_id="session_user_12345",5 input="Меня зовут Алексей, я хочу открыть вклад"6)7# Ответ: Здравствуйте, Алексей! Рад помочь вам с открытием вклада...89# Второй запрос — агент помнит имя10response2 = client.agents.run(11 agent_id=agent.id,12 session_id="session_user_12345", # Та же сессия13 input="Какие у вас есть варианты?"14)15# Ответ: Алексей, у нас есть следующие вклады...1617# Получить историю сессии18history = client.agents.sessions.get_messages(19 agent_id=agent.id,20 session_id="session_user_12345"21)2223# Очистить сессию24client.agents.sessions.clear(25 agent_id=agent.id,26 session_id="session_user_12345"27)
API эндпоинты
| Метод | Эндпоинт | Описание |
|---|---|---|
| POST | /v1/agents | Создать агента |
| GET | /v1/agents | Список агентов |
| GET | /v1/agents/{id} | Получить агента |
| PUT | /v1/agents/{id} | Обновить агента |
| DELETE | /v1/agents/{id} | Удалить агента |
| POST | /v1/agents/{id}/run | Запустить агента |
| GET | /v1/agents/{id}/executions | Список выполнений |
| POST | /v1/agents/{id}/tools | Добавить инструмент |
| GET | /v1/agents/{id}/sessions/{sid} | Получить сессию |
| DELETE | /v1/agents/{id}/sessions/{sid} | Очистить сессию |