# aisuite: один интерфейс, чтобы не учить API каждой LLM заново

- Site: VeraPoint News
- Section: Инструменты
- Date: 2026-06-13
- Canonical: https://verapointmedia.com/tools/andrewyng-aisuite/
- Markdown: https://verapointmedia.com/tools/andrewyng-aisuite.md
- Summary: aisuite — Python-библиотека от Andrew Ng, которая даёт единый интерфейс для OpenAI, Anthropic, Google и десятка других LLM-провайдеров, плюс фреймворк для агентов.
- SEO title: aisuite: рабочий процесс для AI-агентов и разработки
- SEO description: aisuite — Python-библиотека от Andrew Ng, которая даёт единый интерфейс для OpenAI, Anthropic, Google и десятка других LLM-провайдеров, плюс фреймворк для
- Target queries: aisuite; aisuite github; что такое aisuite; как использовать aisuite
- Tags: #aisuite #andrew_ng #python #llm #openai #anthropic
- Image: https://verapointmedia.com/static/content-assets/tools/andrewyng-aisuite/cover.webp

## Sources

- 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

---

Есть в программировании такая рутина, которую никто не любит, но все делают. Подключаешь одну модель — пишешь один клиент. Подключаешь другую — переписываешь под её SDK. Потом добавляешь третью, и в коде образуется лапша из `if provider == "openai"`, `elif provider == "anthropic"`, а на четвёртой модели ты уже не помнишь, кто за что отвечает.

Вот ровно это и пытается починить [aisuite](https://github.com/andrewyng/aisuite) — библиотека от Эндрю Ына, которая даёт единый интерфейс для кучи провайдеров сразу. OpenAI, Anthropic, Google, Mistral, Hugging Face, AWS Bedrock, Ollama, OpenRouter — меняешь одну строчку и работаешь с любой из них. А сверху накручен слой для построения AI-агентов.

Когда я первый раз открыла README, у меня возникло лёгкое дежавю. Таких «универсальных прослоек» уже было штук пять, и половина из них заброшена на второй версии. Но у этой — 14 тысяч звёзд, 132 открытых ишью (то есть проект живой) и лицензия MIT. Плюс имя автора, которое само по себе — знак качества. Так что я решила копнуть.

## Если просто

aisuite — это Python-библиотека, которая работает на двух этажах.

Первый этаж: вызываешь любую LLM через один и тот же метод `client.chat.completions.create(...)`, только в параметре `model` указываешь, какого провайдера хочешь. Вместо «openai:gpt-4o» или «anthropic:claude-sonnet-4-6» — и всё, остальной код не меняется.

Второй этаж: добавляешь моделям «инструменты» — то есть даёшь им возможность вызывать реальные функции, читать файлы, ходить в интернет. И всё это оборачивается в агента, который может работать не один ход, а несколько, пока не решит задачу.

Сверху на этом всём живёт **OpenCoworker** — десктопный AI-ассистент, который умеет читать файлы, писать письма и генерить отчёты. Но это отдельная история, и про неё я скажу пару слов позже.

## Что это решает

Когда вы экспериментируете с моделями, вы обычно делаете одно и то же: отправляете промпт, получаете ответ, меряете качество. И каждый раз — новый SDK, новый формат ошибок, новые странности с параметрами. Где-то `temperature` работает не так, где-то `max_tokens` называется по-другому.

aisuite берёт эту боль на себя. Вы пишете код один раз, а модель меняете одной строкой. Хотите сравнить, как GPT-4o и Claude Sonnet отвечают на один и тот же промпт? Просто прогоняете их в цикле:

```python
import aisuite as ai
client = ai.Client()

models = ["openai:gpt-4o", "anthropic:claude-sonnet-4-6"]

for model in models:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Объясни квантовую запутанность в трёх предложениях"}],
        temperature=0.7
    )
    print(f"\n--- {model} ---")
    print(response.choices[0].message.content)
```

Даже с API-ключами всё по-человечески: их можно прописать в переменных окружения как `OPENAI_API_KEY`, `ANTHROPIC_API_KEY` и так далее. Никакой магии.

Отдельно тут радует поддержка Ollama. Если хочется гонять модели локально и не платить за API — просто ставите Ollama, и aisuite подхватывает её автоматически. Модель указывается как `ollama:llama3` или `ollama:mistral`.

## Что внутри: агенты и инструменты

Вот тут становится по-настоящему интересно. aisuite умеет не просто дёргать модели, а давать им «руки» — вызывать функции, работать с файлами, ходить в MCP-сервера (я погуглила: MCP — это Model Context Protocol, такой стандарт для подключения инструментов к LLM, который придумали в Anthropic).

Работает это элегантно: вы даёте модели обычную Python-функцию, а библиотека сама превращает её в схему, которую модель понимает, выполняет вызов и возвращает результат обратно в диалог:

```python
def проверить_погоду(город: str):
    # В реальном коде тут был бы запрос к API погоды
    return f"В городе {город} сейчас солнечно, +22°C"

client = ai.Client()
response = client.chat.completions.create(
    model="openai:gpt-4o",
    messages=[{
        "role": "user",
        "content": "Стоит ли мне взять зонт? Я в Берлине."
    }],
    tools=[проверить_погоду],
    max_turns=2  # Сколько раз модель может вызывать инструменты
)
print(response.choices[0].message.content)
```

Параметр `max_turns` здесь ключевой. Модель может не один раз вызвать функцию, получить результат, подумать, вызвать ещё что-то — и только потом дать финальный ответ. Это и есть то, что называют «агентом»: не просто «вопрос-ответ», а цепочка действий с обратной связью.

Для более сложных сценариев есть полноценный Agents API. Вы описываете агента, даёте ему имя, инструкции и набор инструментов, а потом запускаете через `Runner`:

```python
agent = Agent(
    name="код-ревьюер",
    model="anthropic:claude-sonnet-4-6",
    instructions="Ты — дотошный ревьюер. Проверяешь код на баги и problems с безопасностью.",
    tools=[*ai.toolkits.files(root="."), *ai.toolkits.git(root=".")],
)
result = Runner.run(agent, "Что изменилось в последнем коммите? Найди потенциальные проблемы.")
print(result.final_output)
```

Тут уже подключаются готовые инструменты: чтение файлов, работа с git, даже shell-команды. И есть занятная штука под названием **tool policies** — можно настроить, чтобы агент спрашивал разрешения перед каждым вызовом инструмента. Чтобы ваш AI-помощник не решил вдруг удалить весь репозиторий из лучших побуждений.

## Как попробовать

Самое простое — поставить через pip:

```bash
pip install 'aisuite[all]'
```

Это подтянет SDK всех поддерживаемых провайдеров. Если нужен только кто-то конкретный:

```bash
pip install 'aisuite[anthropic]'  # только Anthropic
```

Дальше нужно прописать API-ключи в переменных окружения. Для OpenAI и Anthropic это стандартные `OPENAI_API_KEY` и `ANTHROPIC_API_KEY`. Для Google — `GOOGLE_API_KEY`. Если работаете с Ollama локально, ключи не нужны, просто убедитесь, что сервер Ollama запущен.

После этого пробуете самый простой вызов:

```python
import aisuite as ai
client = ai.Client()
response = client.chat.completions.create(
    model="openai:gpt-4o",
    messages=[{"role": "user", "content": "Привет! Как дела?"}]
)
print(response.choices[0].message.content)
```

Если хочется сразу в агентный режим — в репозитории есть [agents-quickstart](https://github.com/andrewyng/aisuite/blob/main/docs/agents-quickstart.md) с готовыми примерами для копипасты.

## 3 сценария с примерами

**Сценарий 1: сравнение моделей на одной задаче**

Задача: вы пишете FAQ-бота и хотите понять, какая модель даёт более полезные ответы на русском языке.

Что делаете: ставите aisuite, прописываете ключи OpenAI и Anthropic, пишете скрипт из 15 строк. Он прогоняет один и тот же промпт через GPT-4o и Claude Sonnet, а вы сидите и сравниваете. Никакого переключения между SDK, никакой возни с форматами.

Результат: через пять минут у вас на руках два ответа, и вы видите, что Claude внезапно даёт более структурированный ответ, хотя вы думали, что победит OpenAI. Сюрприз.

**Сценарий 2: агент для проверки кода в репозитории**

Задача: каждое утро вы открываете свой проект и хотите быстро понять, что изменилось за вчера и нет ли там подозрительных кусков.

Что делаете: описываете агента на aisuite с инструментами для чтения git-диффа и файлов. Даёте ему инструкцию: «Найди изменения за последний день и проверь, нет ли хардкода паролей или открытых API-ключей». Запускаете.

Результат: агент показывает список изменённых файлов и подсвечивает строчку, где вы случайно закоммитили токен. Вы фиксите это до того, как кто-то заметил. Полезно и немного стыдно.

**Сценарий 3: прототип с MCP-инструментом для работы с файловой системой**

Задача: сделать быстрый прототип «умного файлового менеджера», который может читать директории и отвечать на вопросы типа «где у меня лежит последний отчёт?»

Что делаете: берёте aisuite с поддержкой MCP, указываете путь к рабочей папке и пишете промпт вроде «Найди все PDF-файлы за последнюю неделю и покажи самый большой». Это десяток строк кода.

Результат: прототип работает без возни с интеграциями. Вам не нужно писать обёртки для

## Что читать дальше

- [Все материалы про AI-инструменты](/topics/ai-tools/)
- [Как отличить рабочий AI-инструмент от красивой демки](https://verapointmedia.com/guides/kak-otlichit-rabochiy-ai-instrument-ot-krasivoy-demki/)
- [Superpowers: как управлять ИИ-агентами в команде](https://verapointmedia.com/tools/obra-superpowers/)
- [React Doctor — линтер для ассистентов, чтобы они не портили код](https://verapointmedia.com/tools/millionco-react-doctor/)

## Материалы

- [andrewyng/aisuite] andrewyng/aisuite: https://github.com/andrewyng/aisuite
- [img.shields.io] supporting context: https://img.shields.io/badge/%E2%9C%A8_NEW-8250df?style=for-the-badge
- [github.com] supporting context: https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-macos-arm64.dmg
- [github.com] supporting context: https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-windows-setup.exe
