From 00e7ef5d1183695b39a19cdc9348e899d3f4ef48 Mon Sep 17 00:00:00 2001 From: Barabashka Date: Tue, 21 Apr 2026 12:12:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20AgentOS=20API-=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=20=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены зависимости FastAPI/Uvicorn, отдельный entrypoint для AgentOS и новые переменные окружения, чтобы агент запускался как CLI и как HTTP API. --- .env.example | 3 +++ README.md | 44 ++++++++++++++++++++++++++++++++++++++------ requirements.txt | 2 ++ src/agent_os.py | 23 +++++++++++++++++++++++ src/agent_runner.py | 2 ++ 5 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 src/agent_os.py diff --git a/.env.example b/.env.example index ac8600d..ecae3bd 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,9 @@ +AGENT_ID=prisma-agent OLLAMA_MODEL_ID=gemma4:31b OLLAMA_HOST=http://localhost:11435 OLLAMA_TEMPERATURE=0 AGENT_MARKDOWN=false AGENT_DEBUG_MODE=true AGENT_INSTRUCTIONS=You are a helpful assistant. Answer briefly and clearly. +AGENT_OS_HOST=127.0.0.1 +AGENT_OS_PORT=7777 diff --git a/README.md b/README.md index 15db035..2549282 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # Prisma Platform MVP -Minimal chat agent on Agno + Ollama. +Минимальный чат-агент на Agno + Ollama с рантаймом AgentOS. -## Current structure +В этом проекте AgentOS работает как HTTP API сервер (FastAPI + Uvicorn). + +## Текущая структура ```text prisma_platform/ @@ -11,11 +13,12 @@ prisma_platform/ ├── requirements.txt └── src/ ├── __init__.py + ├── agent_os.py ├── agent_runner.py └── main.py ``` -## Setup +## Установка ```bash python -m venv .venv @@ -24,17 +27,46 @@ pip install -r requirements.txt cp .env.example .env ``` -## Run +## Запуск -Interactive chat mode: +Интерактивный режим чата: ```bash python -m src.main ``` -Single message mode: +Режим одного сообщения: ```bash python -m src.main --message "Привет, что ты умеешь?" ``` +## Запуск AgentOS + +Запуск сервера AgentOS: + +```bash +python -m src.agent_os +``` + +По умолчанию AgentOS работает на `http://127.0.0.1:7777`. + +Документация API доступна по адресам: + +- `http://127.0.0.1:7777/docs` +- `http://127.0.0.1:7777/redoc` + +## Переменные окружения + +Основные переменные: + +- `AGENT_ID` (по умолчанию: `prisma-agent`) +- `OLLAMA_MODEL_ID` (по умолчанию: `gemma4:31b`) +- `OLLAMA_HOST` (по умолчанию: `http://localhost:11435`) +- `OLLAMA_TEMPERATURE` (по умолчанию: `0`) +- `AGENT_MARKDOWN` (по умолчанию: `false`) +- `AGENT_DEBUG_MODE` (по умолчанию: `true`) +- `AGENT_INSTRUCTIONS` (по умолчанию: `You are a helpful assistant. Answer briefly and clearly.`) +- `AGENT_OS_HOST` (по умолчанию: `127.0.0.1`) +- `AGENT_OS_PORT` (по умолчанию: `7777`) + diff --git a/requirements.txt b/requirements.txt index 0b6454e..63d5320 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,6 @@ agno +fastapi +uvicorn python-dotenv ollama socksio diff --git a/src/agent_os.py b/src/agent_os.py new file mode 100644 index 0000000..cc1aeaf --- /dev/null +++ b/src/agent_os.py @@ -0,0 +1,23 @@ +import os + +from dotenv import load_dotenv + +from agno.os import AgentOS + +from src.agent_runner import get_agent + +load_dotenv() + +_agent = get_agent() +_agent_os = AgentOS(agents=[_agent]) +app = _agent_os.get_app() + + +def serve_agent_os() -> None: + host = os.getenv("AGENT_OS_HOST", "127.0.0.1") + port = int(os.getenv("AGENT_OS_PORT", "7777")) + _agent_os.serve(app=app, host=host, port=port, reload=False) + + +if __name__ == "__main__": + serve_agent_os() diff --git a/src/agent_runner.py b/src/agent_runner.py index 2366f20..d97709d 100644 --- a/src/agent_runner.py +++ b/src/agent_runner.py @@ -27,6 +27,7 @@ def get_agent() -> Agent: if _agent is not None: return _agent + agent_id = os.getenv("AGENT_ID", "prisma-agent") model_id = os.getenv("OLLAMA_MODEL_ID", "gemma4:31b") ollama_host = os.getenv("OLLAMA_HOST", "http://localhost:11435") temperature = _env_float("OLLAMA_TEMPERATURE", 0.0) @@ -39,6 +40,7 @@ def get_agent() -> Agent: llm = Ollama(id=model_id, host=ollama_host, options={"temperature": temperature}) _agent = Agent( + id=agent_id, model=llm, markdown=markdown, instructions=instructions,