Запустите агентов Letta на OpenAI-совместимом эндпоинте.
Updated 2026-07-29
Self-hosted Letta читает OPENAI_API_BASE и OPENAI_API_KEY из окружения, так что две переменные направляют её стейтфул-агентов на шлюз. Апстрим называет прокси-эндпоинты неофициальными, и эта страница относится к этому серьёзно: что работает, каковы требования и где были острые углы.
Короткий ответ: две переменные окружения на сервере.
Задокументированный путь Letta для OpenAI-совместимых эндпоинтов — это настройка окружения на self-hosted сервере: установите OPENAI_API_BASE в URL эндпоинта и OPENAI_API_KEY в его ключ при запуске сервера, и Letta зарегистрирует модели, которые обслуживает этот эндпоинт. Для APIsRouter base — https://api.apisrouter.com/v1. В UI нет поля base-URL на агента; эндпоинт — это решение на уровне сервера, поэтому именно окружение — та поверхность, которая имеет значение. Одно требование не подлежит обсуждению и стоит того, чтобы прочитать его прежде всего остального: документация Letta утверждает, что OpenAI-совместимые эндпоинты должны поддерживать function calling, потому что цикл агента построен на вызовах инструментов. Эндпоинт, который делает только простые chat completions, вообще не может запустить агента Letta. Модели каталога на APIsRouter говорят на стандартном языке вызова инструментов через /v1/chat/completions — именно та форма, которую ожидает Letta.
docker run \
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
-p 8283:8283 \
-e OPENAI_API_KEY="$APISROUTER_API_KEY" \
-e OPENAI_API_BASE="https://api.apisrouter.com/v1" \
letta/letta:latestПочему Letta полагается на свою модель сильнее, чем чат-приложение.
Letta (letta-ai на GitHub, около 24K звёзд) выросла из исследовательского проекта MemGPT и строит стейтфул-агентов: агентов с персистентной, самоизменяемой памятью, которая переживает сессии. Там, где чат-клиент отправляет ваше сообщение и печатает ответ, агент Letta прогоняет внутренний цикл на каждом взаимодействии, рассуждая о том, что он знает, вызывая инструменты памяти, чтобы читать и переписывать свою собственную core memory и архивное хранилище, и только затем производя ответ. Эта архитектура имеет два следствия для маршрутизации эндпоинта. Во-первых, каждый шаг цикла — это запрос с вызовом инструмента, поэтому function calling — это жёсткое требование, а не приятное дополнение; модель, которая путается в схемах инструментов, здесь не деградирует изящно, она ломает способность агента запоминать. Во-вторых, объём запросов на взаимодействие выше, чем предполагает транскрипт разговора, потому что управление памятью срабатывает параллельно с видимым ответом. Id модели, обслуживающей всё это, — простая строка для эндпоинта, так что с мультивендорным шлюзом за OPENAI_API_BASE id Claude может вести цикл агента, пока быстрый id обслуживает более лёгких агентов на том же сервере, каждый адресуется по своему handle.
Честное состояние поддержки, прямо от апстрима.
Собственная документация Letta говорит, что прокси-эндпоинты OpenAI официально не поддерживаются и что вы, скорее всего, столкнётесь с ошибками, рекомендуя вместо этого прямые подключения к провайдерам. Это предупреждение заслуживает того, чтобы его процитировали, а не похоронили, потому что большинство страниц на эту тему делают вид, что его не существует. На практике это означает нечто более узкое, чем звучит: Letta тестируется против фирменных API первого лица, и эндпоинт, отклоняющийся от семантики OpenAI, особенно вокруг вызова инструментов, даёт сбои, которым апстрим не будет отдавать приоритет. Эндпоинт, который по-настоящему реализует спецификацию, включая вызовы инструментов, работает нормально, и это именно та планка совместимости, от которой зависит жизнь или смерть шлюза. История поддержки также содержала один реальный баг, о котором стоит знать. До начала 2026 года модели, зарегистрированные через OPENAI_API_BASE, автоматически получали префикс провайдера openai-proxy, тогда как создание агента валидировалось по более короткому списку принимаемых префиксов, так что прокси-модели регистрировались, но не могли использоваться для создания агентов. Проблема была закрыта с исправлением в январе 2026 года; если вы работаете на закреплённом более старом сервере, и создание агента отклоняет модели, которые сервер явно листит, вы столкнулись именно с этим расхождением, и обновление — это исправление. Ещё одна движущаяся цель: поверхность продукта Letta смещается, и её документация сейчас направляет новых пользователей к более новым режимам деплоя, отмечая, что классический образ Docker больше не является активно поддерживаемой поверхностью. Переменные окружения выше — это задокументированный механизм для self-hosted сервера; проверяйте актуальную документацию на предмет того, какой серверный артефакт рекомендует апстрим на той неделе, когда вы деплоите.
# after the server is up, list models Letta knows about
curl -s http://localhost:8283/v1/models/ | head -50
# use the handle exactly as listed when creating agentsВыбор моделей для стейтфул-агентов.
Оценка, которая имеет значение, — это верность цикла: создайте тестового агента, проведите разговор, который заставляет обновлять память, затем прочитайте core memory агента и убедитесь, что она реально изменилась. Модель может писать очаровательные ответы и всё равно нарушать контракт памяти, и только тест цикла это ловит.
- Редактирование памяти — это структурированная работа с инструментами. claude-sonnet-4-6 и gpt-5.5 надёжно справляются с циклом «перепиши свою собственную память» — это ключевая компетенция, которая нужна агенту Letta.
- Долгоживущие агенты накапливают контекст. Модели, остающиеся связными глубоко внутри контекстного окна, важны здесь сильнее, чем в стейтлес-чате, и именно здесь claude-opus-4-7 заслуживает своего места для ассистентов с высокими ставками.
- Флоты лёгких агентов, по одному на пользователя или задачу, — это объёмная нагрузка. claude-haiku-4-5-20251001 держит стоимость на агента стабильной, при этом компетентно выполняя вызовы инструментов.
- deepseek-v4-pro стоит протестировать для агентов, смешивающих рассуждение с двуязычным трафиком; требование к вызову инструментов — это фильтр, так что тестируйте сам цикл, а не только прозу.
- Что бы вы ни выбрали, выбирайте по каждому агенту. Сервер регистрирует весь каталог, и каждый агент привязывается к handle, так что памятеёмкий консьерж и одноразовый задачный агент могут работать на разных id бок о бок.
Оплата по факту · дешевле официальных цен
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Модель | Официальная цена | Наша цена |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Opus 4.7 | $5.00 / $25.00 per M | $4.00 / $20.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| DeepSeek V4 Pro | $0.43 / $0.87 per M | $0.40 / $0.90 per M |
Сбои, специфичные именно для Letta.
Отклонение создания агента для модели, которую сервер листит, — это исторический баг с префиксом. Модели, зарегистрированные через прокси, несли префикс провайдера, который создание агента отказывалось принимать на затронутых версиях. Исправление вышло в январе 2026 года; в текущих релизах handle, показанный в листинге моделей, — это handle, который работает. Если вы закреплены на более старом образе, это самая веская отдельная причина обновиться, прежде чем отлаживать что-либо ещё. Агент, который отвечает, но никогда не запоминает, — это сбой вызова инструментов. Либо эндпоинт не реализует function calling, либо модель за id плохо обрабатывает схемы инструментов. Симптом — разговоры, которые работают, пока core memory никогда не обновляется. Протестируйте того же агента на claude-sonnet-4-6, чтобы отделить проблемы эндпоинта от проблем модели. Переменные окружения, заданные не в том месте, — классика Docker: OPENAI_API_BASE, экспортированная в вашей оболочке, ничего не даёт контейнеру, запущенному без флагов -e. Переменные должны достичь самого серверного процесса. И поскольку эндпоинт находится на уровне сервера, помните о радиусе поражения: смена OPENAI_API_BASE двигает каждого агента на этом сервере. Переопределения эндпоинта на агента нет, так что один сервер на один шлюз — это чистая топология, где дифференциацию делает выбор модели по каждому агенту.
Кто направляет Letta через шлюз.
- Разработчики персистентных ассистентов, которым нужно редактирование памяти качества Claude без отдельного аккаунта у вендора, ключа и поверхности биллинга на каждую пробуемую модель.
- Команды, запускающие флоты агентов, где каждый пользователь получает агента, и отслеживание использования по ключу превращает реальную стоимость слоя памяти в читаемый отчёт.
- Исследователи, сравнивающие, как модели справляются с самоизменяемой памятью, где каждый кандидат — это смена handle на тестовом агенте, а не миграция провайдера.
- Self-hosters в средах, где прямой доступ к API вендора заблокирован и единственный эндпоинт шлюза — это то, что допускает сетевая политика.
- Разработчики без доступа к биллингу конкретного вендора. Доступ на основе пополнения без требования карты убирает зависимость от регистрации у каждого провайдера.
Проверьте эндпоинт и отладьте первого агента.
Проверьте шлюз перед сервером: полистайте модели ключом и прогоните один chat completion с прикреплённым определением инструмента, потому что вызов инструментов — это та возможность, от которой реально зависит Letta. Если цикл вызова инструмента работает в curl, половина с эндпоинтом доказана. Затем запустите сервер с двумя переменными и прочитайте его листинг моделей. Модели, появившиеся там, доказывают регистрацию; успешно созданный агент из листингового handle доказывает путь префикса; разговор, обновляющий core memory, доказывает цикл целиком. Отлаживайте в этом порядке, потому что у каждого этапа свой набор сбоев: переменные окружения, версия сервера и компетентность модели в инструментах соответственно. Как только агенты начинают работать, консоль APIsRouter показывает модель на запрос, счётчики токенов и расходы. Стейтфул-агенты тарифицируются на взаимодействие сильнее, чем предполагают их транскрипты, поскольку управление памятью работает за каждым ответом, и лог использования — это место, где этот скрытый множитель становится числом, которое можно бюджетировать.
curl -s https://api.apisrouter.com/v1/chat/completions \
-H "Authorization: Bearer $APISROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4-6",
"messages":[{"role":"user","content":"What is 2+3?"}],
"tools":[{"type":"function","function":{
"name":"calc","description":"add numbers",
"parameters":{"type":"object","properties":{
"a":{"type":"number"},"b":{"type":"number"}}}}}]}'Частые вопросы
Как направить Letta на кастомный OpenAI-совместимый эндпоинт?
Задайте OPENAI_API_BASE и OPENAI_API_KEY в окружении self-hosted сервера Letta, например как флаги -e у docker run. Поля base-URL на агента нет; эндпоинт настраивается на уровне сервера, и его использует каждый агент на этом сервере.
Официально ли Letta поддерживает прокси-эндпоинты?
Апстрим называет их официально не поддерживаемыми и предупреждает, что вы можете столкнуться с ошибками, рекомендуя прямых провайдеров. На практике требование — это строгая совместимость с OpenAI, включая function calling; эндпоинт, реализующий полную спецификацию, ведёт цикл агента, и это та планка, под которую построен APIsRouter.
Почему требуется function calling?
Агенты Letta управляют своей памятью через вызовы инструментов: чтение, переписывание и архивирование памяти — это функции, которые модель вызывает на каждом взаимодействии. Эндпоинт или модель без надёжного вызова инструментов не могут вести цикл, и симптом — агент, который общается, но никогда не запоминает.
Почему создание агента отклоняет модели, которые листит мой сервер?
Старые версии сервера регистрировали прокси-модели под префиксом провайдера, который создание агента отказывалось валидировать, — баг, закрытый с исправлением в январе 2026 года. Обновите сервер, затем используйте handle ровно так, как он появляется в листинге моделей.
Могут ли разные агенты Letta использовать разные модели через один эндпоинт?
Да. Сервер регистрирует каждый id, который обслуживает эндпоинт, и каждый агент привязывается к handle модели при создании. Агент-консьерж на claude-opus-4-7 и флот задачных агентов на claude-haiku-4-5-20251001 могут делить один сервер и один ключ.
Применимо ли это к Letta Cloud или к self-hosted серверу?
К self-hosted серверу, где вы контролируете окружение. Letta Cloud управляет своими вызовами моделей на стороне сервера. Также отметьте, что рекомендуемые артефакты self-hosting Letta смещались, так что сверяйтесь с актуальной документацией на предмет режима деплоя, который поддерживается сегодня.