# AgentRouter SDK
Библиотека для общения с AI моделями через AgentRouter API
## Быстрый старт
### 1. Установка
```bash
pip install agentrouter-sdk
```
### 2. Подключение
```python
from client import AgentRouter
client = AgentRouter(api_key="ваш-ключ")
```
### 3. Задать вопрос AI
```python
ответ = client.ask("Привет, как дела?")
print(ответ)
```
Готово! 🎉
---
## Основные функции
### `ask()` - Простой вопрос-ответ
Задайте вопрос, получите текстовый ответ.
**Параметры:**
- `question` - ваш вопрос (текст)
- `model` - название AI модели (по умолчанию: `"deepseek-v3.2"`)
- `temperature` - креативность ответа от 0 до 2 (по умолчанию: `0.7`)
- `max_tokens` - максимальная длина ответа (по умолчанию: `1000`)
**Пример:**
```python
ответ = client.ask(
question="Что такое Python?",
model="deepseek-v3.2",
temperature=0.5,
max_tokens=200
)
```
---
### `chat()` - Диалог с историей
Ведите беседу с AI, сохраняя контекст предыдущих сообщений.
**Параметры:**
- `messages` - список сообщений или одна строка
- `model` - название AI модели
- `temperature` - креативность (0-2)
- `max_tokens` - максимальная длина ответа
- `stream` - потоковый режим (True/False)
**Пример:**
```python
история = [
{"role": "user", "content": "Привет!"},
{"role": "assistant", "content": "Здравствуйте!"},
{"role": "user", "content": "Расскажи про Python"}
]
response = client.chat(история, max_tokens=300)
print(response.choices[0].message.content)
```
---
### `stream()` - Получение ответа частями
AI отвечает постепенно, слово за словом (как ChatGPT в браузере).
**Параметры:**
- `messages` - ваш вопрос или список сообщений
- `model` - название AI модели
- `temperature` - креативность (0-2)
- `max_tokens` - максимальная длина ответа
**Пример:**
```python
for часть in client.stream("Напиши стихотворение про код"):
print(часть, end="", flush=True)
```
---
### `list_models()` - Список доступных AI моделей
Узнайте, какие модели можно использовать.
**Пример:**
```python
модели = client.list_models()
print(модели) # ['deepseek-v3.2', 'gpt-5', 'glm-4.6', ...]
```
---
### `count_tokens()` - Подсчет использованных токенов
Узнайте, сколько "слов" использовалось в запросе и ответе.
**Пример:**
```python
response = client.chat("Привет!")
токены = client.count_tokens(response)
print(f"Всего токенов: {токены['total']}")
```
---
## Полный пример
```python
from agentrouter import AgentRouter
# Подключаемся
client = AgentRouter(api_key="ваш-ключ")
# Простой вопрос
ответ = client.ask("Напиши Hello World на Python")
print(ответ)
# Узнаем доступные модели
модели = client.list_models()
print("Доступны модели:", модели)
# Потоковый ответ
print("AI отвечает: ", end="")
for часть in client.stream("Расскажи анекдот", max_tokens=100):
print(часть, end="", flush=True)
```
---
## Дополнительные настройки (опционально)
Обычно достаточно указать только API ключ. Но можно изменить настройки:
```python
client = AgentRouter(
api_key="ваш-ключ" # только это обязательно!
# Остальное можно не трогать, работает по умолчанию:
# base_url="https://agentrouter.org/v1"
# referer="https://github.com/RooVetGit/Roo-Cline"
# title="Roo Code"
# user_agent="RooCode/1.0.0"
)
```
Raw data
{
"_id": null,
"home_page": null,
"name": "agentrouter-sdk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "ai, api, agentrouter, llm, deepseek",
"author": "AgentRouter Team",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/5a/be/a6baf020227a0a5fbfb4fce7e905d33933bf035a0f972b72e774cb65167d/agentrouter_sdk-0.1.1.tar.gz",
"platform": null,
"description": "# AgentRouter SDK\r\n\r\n\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 AI \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 AgentRouter API\r\n\r\n## \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n### 1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n```bash\r\npip install agentrouter-sdk\r\n```\r\n\r\n### 2. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\r\n```python\r\nfrom client import AgentRouter\r\n\r\nclient = AgentRouter(api_key=\"\u0432\u0430\u0448-\u043a\u043b\u044e\u0447\")\r\n```\r\n\r\n### 3. \u0417\u0430\u0434\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 AI\r\n```python\r\n\u043e\u0442\u0432\u0435\u0442 = client.ask(\"\u041f\u0440\u0438\u0432\u0435\u0442, \u043a\u0430\u043a \u0434\u0435\u043b\u0430?\")\r\nprint(\u043e\u0442\u0432\u0435\u0442)\r\n```\r\n\r\n\u0413\u043e\u0442\u043e\u0432\u043e! \ud83c\udf89\r\n\r\n---\r\n\r\n## \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\r\n\r\n### `ask()` - \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441-\u043e\u0442\u0432\u0435\u0442\r\n\u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u043e\u043f\u0440\u043e\u0441, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043e\u0442\u0432\u0435\u0442.\r\n\r\n**\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:**\r\n- `question` - \u0432\u0430\u0448 \u0432\u043e\u043f\u0440\u043e\u0441 (\u0442\u0435\u043a\u0441\u0442)\r\n- `model` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 AI \u043c\u043e\u0434\u0435\u043b\u0438 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: `\"deepseek-v3.2\"`)\r\n- `temperature` - \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 0 \u0434\u043e 2 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: `0.7`)\r\n- `max_tokens` - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: `1000`)\r\n\r\n**\u041f\u0440\u0438\u043c\u0435\u0440:**\r\n```python\r\n\u043e\u0442\u0432\u0435\u0442 = client.ask(\r\n question=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Python?\",\r\n model=\"deepseek-v3.2\",\r\n temperature=0.5,\r\n max_tokens=200\r\n)\r\n```\r\n\r\n---\r\n\r\n### `chat()` - \u0414\u0438\u0430\u043b\u043e\u0433 \u0441 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439\r\n\u0412\u0435\u0434\u0438\u0442\u0435 \u0431\u0435\u0441\u0435\u0434\u0443 \u0441 AI, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.\r\n\r\n**\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:**\r\n- `messages` - \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\r\n- `model` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 AI \u043c\u043e\u0434\u0435\u043b\u0438\r\n- `temperature` - \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c (0-2)\r\n- `max_tokens` - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0430\r\n- `stream` - \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c (True/False)\r\n\r\n**\u041f\u0440\u0438\u043c\u0435\u0440:**\r\n```python\r\n\u0438\u0441\u0442\u043e\u0440\u0438\u044f = [\r\n {\"role\": \"user\", \"content\": \"\u041f\u0440\u0438\u0432\u0435\u0442!\"},\r\n {\"role\": \"assistant\", \"content\": \"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435!\"},\r\n {\"role\": \"user\", \"content\": \"\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438 \u043f\u0440\u043e Python\"}\r\n]\r\n\r\nresponse = client.chat(\u0438\u0441\u0442\u043e\u0440\u0438\u044f, max_tokens=300)\r\nprint(response.choices[0].message.content)\r\n```\r\n\r\n---\r\n\r\n### `stream()` - \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u0447\u0430\u0441\u0442\u044f\u043c\u0438\r\nAI \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e, \u0441\u043b\u043e\u0432\u043e \u0437\u0430 \u0441\u043b\u043e\u0432\u043e\u043c (\u043a\u0430\u043a ChatGPT \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435).\r\n\r\n**\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:**\r\n- `messages` - \u0432\u0430\u0448 \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\r\n- `model` - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 AI \u043c\u043e\u0434\u0435\u043b\u0438\r\n- `temperature` - \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c (0-2)\r\n- `max_tokens` - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0430\r\n\r\n**\u041f\u0440\u0438\u043c\u0435\u0440:**\r\n```python\r\nfor \u0447\u0430\u0441\u0442\u044c in client.stream(\"\u041d\u0430\u043f\u0438\u0448\u0438 \u0441\u0442\u0438\u0445\u043e\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u043e \u043a\u043e\u0434\"):\r\n print(\u0447\u0430\u0441\u0442\u044c, end=\"\", flush=True)\r\n```\r\n\r\n---\r\n\r\n### `list_models()` - \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 AI \u043c\u043e\u0434\u0435\u043b\u0435\u0439\r\n\u0423\u0437\u043d\u0430\u0439\u0442\u0435, \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.\r\n\r\n**\u041f\u0440\u0438\u043c\u0435\u0440:**\r\n```python\r\n\u043c\u043e\u0434\u0435\u043b\u0438 = client.list_models()\r\nprint(\u043c\u043e\u0434\u0435\u043b\u0438) # ['deepseek-v3.2', 'gpt-5', 'glm-4.6', ...]\r\n```\r\n\r\n---\r\n\r\n### `count_tokens()` - \u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432\r\n\u0423\u0437\u043d\u0430\u0439\u0442\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \"\u0441\u043b\u043e\u0432\" \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0438 \u043e\u0442\u0432\u0435\u0442\u0435.\r\n\r\n**\u041f\u0440\u0438\u043c\u0435\u0440:**\r\n```python\r\nresponse = client.chat(\"\u041f\u0440\u0438\u0432\u0435\u0442!\")\r\n\u0442\u043e\u043a\u0435\u043d\u044b = client.count_tokens(response)\r\nprint(f\"\u0412\u0441\u0435\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432: {\u0442\u043e\u043a\u0435\u043d\u044b['total']}\")\r\n```\r\n\r\n---\r\n\r\n## \u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\r\n\r\n```python\r\nfrom agentrouter import AgentRouter\r\n\r\n# \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f\r\nclient = AgentRouter(api_key=\"\u0432\u0430\u0448-\u043a\u043b\u044e\u0447\")\r\n\r\n# \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441\r\n\u043e\u0442\u0432\u0435\u0442 = client.ask(\"\u041d\u0430\u043f\u0438\u0448\u0438 Hello World \u043d\u0430 Python\")\r\nprint(\u043e\u0442\u0432\u0435\u0442)\r\n\r\n# \u0423\u0437\u043d\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\r\n\u043c\u043e\u0434\u0435\u043b\u0438 = client.list_models()\r\nprint(\"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043c\u043e\u0434\u0435\u043b\u0438:\", \u043c\u043e\u0434\u0435\u043b\u0438)\r\n\r\n# \u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u043e\u0442\u0432\u0435\u0442\r\nprint(\"AI \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442: \", end=\"\")\r\nfor \u0447\u0430\u0441\u0442\u044c in client.stream(\"\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438 \u0430\u043d\u0435\u043a\u0434\u043e\u0442\", max_tokens=100):\r\n print(\u0447\u0430\u0441\u0442\u044c, end=\"\", flush=True)\r\n```\r\n\r\n---\r\n\r\n## \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)\r\n\r\n\u041e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e API \u043a\u043b\u044e\u0447. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:\r\n\r\n```python\r\nclient = AgentRouter(\r\n api_key=\"\u0432\u0430\u0448-\u043a\u043b\u044e\u0447\" # \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e!\r\n \r\n # \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:\r\n # base_url=\"https://agentrouter.org/v1\"\r\n # referer=\"https://github.com/RooVetGit/Roo-Cline\"\r\n # title=\"Roo Code\"\r\n # user_agent=\"RooCode/1.0.0\"\r\n)\r\n```\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u041f\u0440\u043e\u0441\u0442\u043e\u0439 SDK \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 AgentRouter API",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/roman-prizrakjj/agentrouter",
"Repository": "https://github.com/roman-prizrakjj/agentrouter"
},
"split_keywords": [
"ai",
" api",
" agentrouter",
" llm",
" deepseek"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0fbec4ab68ab062f8633b223b0b1ab69ae42126f3439832624e7397696faa078",
"md5": "0a77495bd5702c288236bed88a4191e0",
"sha256": "a8c8fd7add946ba700d583c07edf95270ff485a5ef7ac62a791114b7a97d7ca9"
},
"downloads": -1,
"filename": "agentrouter_sdk-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0a77495bd5702c288236bed88a4191e0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 5521,
"upload_time": "2025-10-25T19:11:07",
"upload_time_iso_8601": "2025-10-25T19:11:07.352518Z",
"url": "https://files.pythonhosted.org/packages/0f/be/c4ab68ab062f8633b223b0b1ab69ae42126f3439832624e7397696faa078/agentrouter_sdk-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5abea6baf020227a0a5fbfb4fce7e905d33933bf035a0f972b72e774cb65167d",
"md5": "5671572280272c0cf7ff8f29d823aa8a",
"sha256": "4f45d8ca6db9a3dbb3f32b773c6ebd36e2be4feacfece4ebb2c176d2c613c4d2"
},
"downloads": -1,
"filename": "agentrouter_sdk-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "5671572280272c0cf7ff8f29d823aa8a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 5032,
"upload_time": "2025-10-25T19:11:08",
"upload_time_iso_8601": "2025-10-25T19:11:08.380296Z",
"url": "https://files.pythonhosted.org/packages/5a/be/a6baf020227a0a5fbfb4fce7e905d33933bf035a0f972b72e774cb65167d/agentrouter_sdk-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-25 19:11:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "roman-prizrakjj",
"github_project": "agentrouter",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "agentrouter-sdk"
}