{"title":"aisuite: один интерфейс, чтобы не учить API каждой LLM заново","url":"https://verapointmedia.com/tools/andrewyng-aisuite/","markdownUrl":"https://verapointmedia.com/tools/andrewyng-aisuite.md","language":"ru","category":"tools","publishedAt":"2026-06-13T17:00:29.000Z","updatedAt":"2026-06-13T17:00:29.000Z","references":["https://github.com/andrewyng/aisuite","https://img.shields.io/badge/%E2%9C%A8_NEW-8250df?style=for-the-badge","https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-macos-arm64.dmg","https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-windows-setup.exe"],"rights":"Public user-requested reading, summarization and citation allowed. Model training requires separate permission.","contentMarkdown":"# aisuite: один интерфейс, чтобы не учить API каждой LLM заново\n\n- Site: VeraPoint News\n- Section: Инструменты\n- Date: 2026-06-13\n- Canonical: https://verapointmedia.com/tools/andrewyng-aisuite/\n- Markdown: https://verapointmedia.com/tools/andrewyng-aisuite.md\n- Summary: aisuite — Python-библиотека от Andrew Ng, которая даёт единый интерфейс для OpenAI, Anthropic, Google и десятка других LLM-провайдеров, плюс фреймворк для агентов.\n- SEO title: aisuite: рабочий процесс для AI-агентов и разработки\n- SEO description: aisuite — Python-библиотека от Andrew Ng, которая даёт единый интерфейс для OpenAI, Anthropic, Google и десятка других LLM-провайдеров, плюс фреймворк для\n- Target queries: aisuite; aisuite github; что такое aisuite; как использовать aisuite\n- Tags: #aisuite #andrew_ng #python #llm #openai #anthropic\n- Image: https://verapointmedia.com/static/content-assets/tools/andrewyng-aisuite/cover.webp\n\n## Sources\n\n- https://github.com/andrewyng/aisuite\n- https://img.shields.io/badge/%E2%9C%A8_NEW-8250df?style=for-the-badge\n- https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-macos-arm64.dmg\n- https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-windows-setup.exe\n\n---\n\nЕсть в программировании такая рутина, которую никто не любит, но все делают. Подключаешь одну модель — пишешь один клиент. Подключаешь другую — переписываешь под её SDK. Потом добавляешь третью, и в коде образуется лапша из `if provider == \"openai\"`, `elif provider == \"anthropic\"`, а на четвёртой модели ты уже не помнишь, кто за что отвечает.\n\nВот ровно это и пытается починить [aisuite](https://github.com/andrewyng/aisuite) — библиотека от Эндрю Ына, которая даёт единый интерфейс для кучи провайдеров сразу. OpenAI, Anthropic, Google, Mistral, Hugging Face, AWS Bedrock, Ollama, OpenRouter — меняешь одну строчку и работаешь с любой из них. А сверху накручен слой для построения AI-агентов.\n\nКогда я первый раз открыла README, у меня возникло лёгкое дежавю. Таких «универсальных прослоек» уже было штук пять, и половина из них заброшена на второй версии. Но у этой — 14 тысяч звёзд, 132 открытых ишью (то есть проект живой) и лицензия MIT. Плюс имя автора, которое само по себе — знак качества. Так что я решила копнуть.\n\n## Если просто\n\naisuite — это Python-библиотека, которая работает на двух этажах.\n\nПервый этаж: вызываешь любую LLM через один и тот же метод `client.chat.completions.create(...)`, только в параметре `model` указываешь, какого провайдера хочешь. Вместо «openai:gpt-4o» или «anthropic:claude-sonnet-4-6» — и всё, остальной код не меняется.\n\nВторой этаж: добавляешь моделям «инструменты» — то есть даёшь им возможность вызывать реальные функции, читать файлы, ходить в интернет. И всё это оборачивается в агента, который может работать не один ход, а несколько, пока не решит задачу.\n\nСверху на этом всём живёт **OpenCoworker** — десктопный AI-ассистент, который умеет читать файлы, писать письма и генерить отчёты. Но это отдельная история, и про неё я скажу пару слов позже.\n\n## Что это решает\n\nКогда вы экспериментируете с моделями, вы обычно делаете одно и то же: отправляете промпт, получаете ответ, меряете качество. И каждый раз — новый SDK, новый формат ошибок, новые странности с параметрами. Где-то `temperature` работает не так, где-то `max_tokens` называется по-другому.\n\naisuite берёт эту боль на себя. Вы пишете код один раз, а модель меняете одной строкой. Хотите сравнить, как GPT-4o и Claude Sonnet отвечают на один и тот же промпт? Просто прогоняете их в цикле:\n\n```python\nimport aisuite as ai\nclient = ai.Client()\n\nmodels = [\"openai:gpt-4o\", \"anthropic:claude-sonnet-4-6\"]\n\nfor model in models:\n    response = client.chat.completions.create(\n        model=model,\n        messages=[{\"role\": \"user\", \"content\": \"Объясни квантовую запутанность в трёх предложениях\"}],\n        temperature=0.7\n    )\n    print(f\"\\n--- {model} ---\")\n    print(response.choices[0].message.content)\n```\n\nДаже с API-ключами всё по-человечески: их можно прописать в переменных окружения как `OPENAI_API_KEY`, `ANTHROPIC_API_KEY` и так далее. Никакой магии.\n\nОтдельно тут радует поддержка Ollama. Если хочется гонять модели локально и не платить за API — просто ставите Ollama, и aisuite подхватывает её автоматически. Модель указывается как `ollama:llama3` или `ollama:mistral`.\n\n## Что внутри: агенты и инструменты\n\nВот тут становится по-настоящему интересно. aisuite умеет не просто дёргать модели, а давать им «руки» — вызывать функции, работать с файлами, ходить в MCP-сервера (я погуглила: MCP — это Model Context Protocol, такой стандарт для подключения инструментов к LLM, который придумали в Anthropic).\n\nРаботает это элегантно: вы даёте модели обычную Python-функцию, а библиотека сама превращает её в схему, которую модель понимает, выполняет вызов и возвращает результат обратно в диалог:\n\n```python\ndef проверить_погоду(город: str):\n    # В реальном коде тут был бы запрос к API погоды\n    return f\"В городе {город} сейчас солнечно, +22°C\"\n\nclient = ai.Client()\nresponse = client.chat.completions.create(\n    model=\"openai:gpt-4o\",\n    messages=[{\n        \"role\": \"user\",\n        \"content\": \"Стоит ли мне взять зонт? Я в Берлине.\"\n    }],\n    tools=[проверить_погоду],\n    max_turns=2  # Сколько раз модель может вызывать инструменты\n)\nprint(response.choices[0].message.content)\n```\n\nПараметр `max_turns` здесь ключевой. Модель может не один раз вызвать функцию, получить результат, подумать, вызвать ещё что-то — и только потом дать финальный ответ. Это и есть то, что называют «агентом»: не просто «вопрос-ответ», а цепочка действий с обратной связью.\n\nДля более сложных сценариев есть полноценный Agents API. Вы описываете агента, даёте ему имя, инструкции и набор инструментов, а потом запускаете через `Runner`:\n\n```python\nagent = Agent(\n    name=\"код-ревьюер\",\n    model=\"anthropic:claude-sonnet-4-6\",\n    instructions=\"Ты — дотошный ревьюер. Проверяешь код на баги и problems с безопасностью.\",\n    tools=[*ai.toolkits.files(root=\".\"), *ai.toolkits.git(root=\".\")],\n)\nresult = Runner.run(agent, \"Что изменилось в последнем коммите? Найди потенциальные проблемы.\")\nprint(result.final_output)\n```\n\nТут уже подключаются готовые инструменты: чтение файлов, работа с git, даже shell-команды. И есть занятная штука под названием **tool policies** — можно настроить, чтобы агент спрашивал разрешения перед каждым вызовом инструмента. Чтобы ваш AI-помощник не решил вдруг удалить весь репозиторий из лучших побуждений.\n\n## Как попробовать\n\nСамое простое — поставить через pip:\n\n```bash\npip install 'aisuite[all]'\n```\n\nЭто подтянет SDK всех поддерживаемых провайдеров. Если нужен только кто-то конкретный:\n\n```bash\npip install 'aisuite[anthropic]'  # только Anthropic\n```\n\nДальше нужно прописать API-ключи в переменных окружения. Для OpenAI и Anthropic это стандартные `OPENAI_API_KEY` и `ANTHROPIC_API_KEY`. Для Google — `GOOGLE_API_KEY`. Если работаете с Ollama локально, ключи не нужны, просто убедитесь, что сервер Ollama запущен.\n\nПосле этого пробуете самый простой вызов:\n\n```python\nimport aisuite as ai\nclient = ai.Client()\nresponse = client.chat.completions.create(\n    model=\"openai:gpt-4o\",\n    messages=[{\"role\": \"user\", \"content\": \"Привет! Как дела?\"}]\n)\nprint(response.choices[0].message.content)\n```\n\nЕсли хочется сразу в агентный режим — в репозитории есть [agents-quickstart](https://github.com/andrewyng/aisuite/blob/main/docs/agents-quickstart.md) с готовыми примерами для копипасты.\n\n## 3 сценария с примерами\n\n**Сценарий 1: сравнение моделей на одной задаче**\n\nЗадача: вы пишете FAQ-бота и хотите понять, какая модель даёт более полезные ответы на русском языке.\n\nЧто делаете: ставите aisuite, прописываете ключи OpenAI и Anthropic, пишете скрипт из 15 строк. Он прогоняет один и тот же промпт через GPT-4o и Claude Sonnet, а вы сидите и сравниваете. Никакого переключения между SDK, никакой возни с форматами.\n\nРезультат: через пять минут у вас на руках два ответа, и вы видите, что Claude внезапно даёт более структурированный ответ, хотя вы думали, что победит OpenAI. Сюрприз.\n\n**Сценарий 2: агент для проверки кода в репозитории**\n\nЗадача: каждое утро вы открываете свой проект и хотите быстро понять, что изменилось за вчера и нет ли там подозрительных кусков.\n\nЧто делаете: описываете агента на aisuite с инструментами для чтения git-диффа и файлов. Даёте ему инструкцию: «Найди изменения за последний день и проверь, нет ли хардкода паролей или открытых API-ключей». Запускаете.\n\nРезультат: агент показывает список изменённых файлов и подсвечивает строчку, где вы случайно закоммитили токен. Вы фиксите это до того, как кто-то заметил. Полезно и немного стыдно.\n\n**Сценарий 3: прототип с MCP-инструментом для работы с файловой системой**\n\nЗадача: сделать быстрый прототип «умного файлового менеджера», который может читать директории и отвечать на вопросы типа «где у меня лежит последний отчёт?»\n\nЧто делаете: берёте aisuite с поддержкой MCP, указываете путь к рабочей папке и пишете промпт вроде «Найди все PDF-файлы за последнюю неделю и покажи самый большой». Это десяток строк кода.\n\nРезультат: прототип работает без возни с интеграциями. Вам не нужно писать обёртки для\n\n## Что читать дальше\n\n- [Все материалы про AI-инструменты](/topics/ai-tools/)\n- [Как отличить рабочий AI-инструмент от красивой демки](https://verapointmedia.com/guides/kak-otlichit-rabochiy-ai-instrument-ot-krasivoy-demki/)\n- [Superpowers: как управлять ИИ-агентами в команде](https://verapointmedia.com/tools/obra-superpowers/)\n- [React Doctor — линтер для ассистентов, чтобы они не портили код](https://verapointmedia.com/tools/millionco-react-doctor/)\n\n## Материалы\n\n- [andrewyng/aisuite] andrewyng/aisuite: https://github.com/andrewyng/aisuite\n- [img.shields.io] supporting context: https://img.shields.io/badge/%E2%9C%A8_NEW-8250df?style=for-the-badge\n- [github.com] supporting context: https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-macos-arm64.dmg\n- [github.com] supporting context: https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-windows-setup.exe\n"}