Настройка собственного API ai-hedge-fund

Updated 2026-09-05

Сначала выбирается провайдер, затем настраивается конечная точка. Следуйте текущим model factory и registry, а данные, вывод агента и оценку проверяйте на отдельных этапах.

Определите текущий путь приложения

Для текущего приложения ai-hedge-fund подтвердите провайдера в registry модели до настройки OPENAI_API_BASE. На revision fc1bf250 factory клиента находится в hedge_fund/llm/client.py и читает расположенный рядом registry. Старые руководства, ссылающиеся только на src/llm/models.py, описывают другой путь приложения. Зафиксируйте checkout и используйте entrypoint, который импортирует текущую factory. Начните с приведённой ниже проверки провайдера, затем проверьте клиент проекта до сбора финансовых данных для полного исследовательского цикла.

Разрешите провайдера до настройки базового URL

make_llm выбирает провайдера по идентификатору выбранной модели. Его ветка OpenAI передаёт OPENAI_API_BASE в ChatOpenAI и читает соответствующий API-ключ. В рассмотренном источнике неизвестный идентификатор переключается на транспорт Anthropic, поэтому одного экспорта OpenAI base URL недостаточно. Сначала подтвердите, что точный ID модели endpoint зарегистрирован под OpenAI. Здесь OpenAI обозначает адаптер транспорта, но не сертифицирует поставщика самой модели. Не меняйте глобальную запись registry, пока не поймёте каждый использующий её процесс.

НастройкаНазначениеПроверка
HEDGE_FUND_LLM_MODELВыбрать точный ID моделиRegistry разрешает нужного провайдера
OPENAI_API_BASEПереопределить endpoint транспорта OpenAIПрименяется к ветке OpenAI
OPENAI_API_KEYАутентифицировать этот транспортДоступно процессу клиента
api_models.jsonСопоставить ID моделей с провайдерамиТекущий путь: hedge_fund/llm/

Проверьте конфигурацию, не отправляя запрос

Приведённый ниже пример завершается до создания клиента, если локальный registry выбирает другой транспорт. Задайте RESEARCH_MODEL_ID равным ID из каталога, регистрацию которого в приложении вы проверили. Если записи нет, намеренно добавьте локальную строку registry с существующими полями display_name, model_name и provider, сохранив несвязанные записи. Placeholder не является заявлением о поддерживаемой модели. Передайте ключ через окружение или хранилище секретов. Эта предварительная проверка оценивает только выбор; она не подтверждает доступ к сети, права аккаунта, структурированный вывод или качество исследования.

import os
from hedge_fund.llm.registry import provider_for

model = os.environ["RESEARCH_MODEL_ID"]
if provider_for(model) != "OpenAI":
    raise RuntimeError("MODEL_TRANSPORT_MISMATCH")
os.environ["HEDGE_FUND_LLM_MODEL"] = model
os.environ["OPENAI_API_BASE"] = "https://api.apisrouter.com/v1"
assert os.environ["OPENAI_API_KEY"]
# Selection check only; no make_llm() or model request.

Проследите предлагаемый маршрут модели

Маршрут модели начинается после разрешения registry. Приложению по-прежнему нужны клиент финансовых данных, определение универсума и явная дата исследования. Ключ gateway не является учётными данными Financial Datasets и не даёт права распространять рыночные данные. Независимо проверьте идентификаторы компаний, валюту и семантику временных меток. Для компаний с несколькими листингами укажите, относится ли анализ к эмитенту, местному классу акций или депозитарной расписке. Отделяйте свидетельства запросов модели от свидетельств поставщика данных, чтобы отсутствующий финансовый ряд не диагностировать как проблему LLM.

Маршрут транспорта OpenAI в ai-hedge-fund после выбора модели через registry.ai-hedge-fund routes through Провайдер OpenAI из registry + OPENAI_API_BASE to the APIsRouter gateway (api.apisrouter.com/v1), which fans out to: Registered research model.ai-hedge-fundviaПровайдер OpenAI изregistry +OPENAI_API_BASEAPIsRouterapi.apisrouter.com/v1Registered research model
Документированный маршрут клиента после выбора провайдера. Финансовые данные используют собственный клиент.

Проверяйте решения после разбора как данные

Проверенная factory скрывает клиентов провайдеров за методом complete(system, user). Её текстовый ответ не является автоматически корректным результатом исследования. Изучите слой агента, который разбирает JSON, обрабатывает отказ от ответа и объединяет выводы. Ответ может быть непустым, но некорректным, внутренне противоречивым или не подтверждённым вводными. Сохраните редактированный исходный ответ и разобранный объект в одной записи запроса. Проверяйте ожидаемые поля и допустимые состояния, а не совпадение с успокаивающим предложением. Отсутствующий или отклонённый результат считайте недоступным, а не нейтральным сигналом, который незаметно попадёт в агрегацию портфеля.

import os
from hedge_fund.llm.client import make_llm, extract_json
from hedge_fund.llm.registry import provider_for

model = os.environ["HEDGE_FUND_LLM_MODEL"]
assert provider_for(model) == "OpenAI"
client = make_llm(model=model)
result = extract_json(client.complete(
    "Return a JSON object with a boolean ready field.",
    "Set ready to true.",
))
assert result.get("ready") is True
# This request tests the client and parser, not financial research.

Сделайте первый исследовательский цикл небольшим и проверяемым

После авторизованного теста клиента выберите одного эмитента и ограниченный вопрос с лицензированными или публичными свидетельствами. Убедитесь, что каждый нужный инструмент вернул ожидаемую компанию и период, затем сравните созданное объяснение с исходными документами. Оставьте первый запуск доступным только для чтения и сохраните явный этап человеческой проверки. Оцените, цитирует ли вывод подтверждающие и противоположные свидетельства, фиксирует ли отсутствующие данные и различает ли допущения и расчёты. Название роли аналитика или стиль инвестирования не доказывает, что созданное рассуждение воспроизводит методы или суждения реального человека.

Сохраняйте независимость свидетельств backtest

Приложение может завершить исследовательский цикл, пока его историческая оценка остаётся некорректной. Проверьте временные метки публикаций, исправленные данные, выбор сохранившихся компаний и использование текущих новостей в исторических prompt. Разделите периоды разработки, валидации и отложенной проверки до итераций над prompt или настройками стратегии. Сохраните benchmark, допущения о транзакционных издержках и каждую испробованную конфигурацию. Неоднократный выбор prompt по одному тестовому периоду превращает этот период в данные разработки. Честно сообщайте о неполной оценке, а не заполняйте таблицу результатов иллюстративной доходностью, которую можно принять за измерение.

Контролируйте сбои и общие расходы исследования

Считайте вызовы моделей, повторы, ошибки разбора, расходы на финансовые данные и локальные вычисления на уровне задачи. Тайм-аут endpoint может оставить биллинг неизвестным до сверки usage. Повторяйте временные сбои транспорта в рамках фиксированного бюджета; не повторяйте без изменений ошибки аутентификации или выбора провайдера. Оставляйте сбойный этап и его очищенную ошибку доступными для проверки. Общий ответ gateway hello может помочь изолировать транспорт, но поведение адаптера проверяет только собственный клиент проекта. Для полезного сравнения стоимости сохраняйте одинаковыми пакет источников, роли и критерии приёмки вывода у всех кандидатов моделей.

Свидетельства и ограничения

Текущие factory и registry были проверены на fc1bf250 5 сентября 2026 года. Примеры являются шаблонами, основанными на исходниках; для этого руководства не выполнялся запрос APIsRouter или полный исследовательский цикл. Более ранние вызовы через другие gateway не подтверждают эту интеграцию. При проверке окружения храните отдельно результаты клиента, инструмента данных и полного артефакта.

Частые вопросы

Почему мой собственный ID запрашивает ключ Anthropic?

В рассмотренной factory незарегистрированный ID модели переключается на Anthropic. Проверьте provider_for(model) и текущий registry hedge_fund/llm/api_models.json до создания клиента.

Перенаправляет ли OPENAI_API_BASE каждого провайдера?

Нет. Он читается в ветке клиента OpenAI. Другие провайдеры registry создают собственные клиенты и могут использовать другие настройки.

Какие поля registry важны?

Проверенный registry читает display_name, model_name и provider. Сохраните точный ID endpoint и намеренно выберите транспорт.

Означает ли модель в меню приложения доступ к endpoint?

Нет. Проверьте точный ID и доступ аккаунта у выбранной endpoint. Registry приложения определяет выбор клиента, а не каталог gateway.

Что проверить после того, как клиент вернул JSON?

Проверьте инструменты финансовых данных, схему вывода агента, поведение отказа и итоговый исследовательский артефакт, связанный с источниками, на ограниченной задаче.

Можно ли использовать вывод для автоматической заявки?

Это руководство посвящено настройке исследования. Авторизация заявок, лимиты, сверка и операционная проверка относятся к отдельно проверенной системе исполнения.