Запустіть TradingAgents на кастомному OpenAI-сумісному бекенді.

Updated 2026-07-30

TradingAgents постачається з режимом провайдера openai_compatible. Встановіть backend_url на https://api.apisrouter.com/v1, експортуйте один ключ — і агенти глибокого й швидкого мислення маршрутизуються через єдиний ендпоінт з кожною моделлю каталогу, адресованою за id.

Коротка відповідь: три налаштування маршрутизують TradingAgents будь-куди.

TradingAgents нативно підтримує кастомні ендпоінти. Встановіть llm_provider на "openai_compatible", встановіть backend_url на адресу вашого ендпоінта й експортуйте OPENAI_COMPATIBLE_API_KEY з ключем для того ендпоінта. З APIsRouter адреса бекенду — https://api.apisrouter.com/v1, і кожна модель у каталозі стає адресованою зі слотів deep_think_llm і quick_think_llm за точним id моделі. Це задокументований шлях конфігурації в апстрим-репозиторії, а не форк чи патч. Ті самі значення можна також надати як змінні середовища (TRADINGAGENTS_LLM_PROVIDER, TRADINGAGENTS_LLM_BACKEND_URL, TRADINGAGENTS_DEEP_THINK_LLM, TRADINGAGENTS_QUICK_THINK_LLM), тож заплановане завдання чи CI-раннер може перемкнути бекенди без торкання коду Python.

config["llm_provider"] = "openai_compatible"
config["backend_url"] = "https://api.apisrouter.com/v1"
# auth: export OPENAI_COMPATIBLE_API_KEY=sk-...

Як TradingAgents розмовляє зі своїм бекендом LLM.

TradingAgents (TauricResearch на GitHub, 93 тис.+ зірок) — мультиагентний торговий фреймворк. Один прогін аналізу розгалужується на команду аналітиків, що покриває фундаментали, настрій, новини й техніку, потім бичачий і ведмежий дослідники сперечаються по одному чи кількох раундах дебатів, агент-трейдер пропонує позицію, а шар ризик-менеджменту переглядає її перед фінальним рішенням. Фреймворк розділяє цю роботу на два слоти моделей. deep_think_llm обробляє кроки, важкі на міркування: дослідницькі дебати, рішення трейдера й перегляд ризику. quick_think_llm обробляє об'ємні кроки: читання даних, підсумовування новин, складання чернеток звітів аналітиків. Обидва слоти видають стандартні запити /v1/chat/completions. Налаштування провайдера лише вирішує, на якого клієнта й хост ці запити йдуть, а openai_compatible надсилає їх на будь-який backend_url, який ви налаштуєте. Нативно TradingAgents також підтримує OpenAI, Anthropic, Google і DeepSeek як провайдерів першого класу, але кожен потребує власного облікового запису, власного ключа й одного провайдера на прогін. Режим openai_compatible це згортає: TradingAgents пересилає поле model як звичайний рядок, тож коли ендпоінт за backend_url обслуговує кількох постачальників, слот глибокого мислення на Claude і слот швидкого мислення на GPT чи DeepSeek можуть працювати в тому самому аналізі. Це змішування по ролях — практична причина маршрутизувати фреймворк через шлюз, а не через ендпоінт одного постачальника.

Повне налаштування: конфігурація Python чи змінні середовища.

Програмний шлях копіює DEFAULT_CONFIG і перевизначає чотири ключі. Ключ, що автентифікує проти кастомного ендпоінта, зчитується з OPENAI_COMPATIBLE_API_KEY, тож йому ніколи не потрібно з'являтися в словнику конфігурації чи файлі коду. Шлях через змінні середовища встановлює ті самі значення через мапу _ENV_OVERRIDES у default_config.py й працює як для Python API, так і для інтерактивного CLI (tradingagents, чи python -m cli.main). Зверніть увагу, що backend_url за замовчуванням None, у якому разі клієнт кожного провайдера відкочується до свого типового ендпоінта; перевизначення набуває чинності лише після того, як ви встановите його явно. Ринкові дані — окрема справа. TradingAgents отримує котирування й фундаментали через своїх постачальників даних (наприклад, ALPHA_VANTAGE_API_KEY), і ці облікові дані не пов'язані з ендпоінтом LLM. Зміна backend_url не торкається конвеєра даних.

from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG

config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai_compatible"
config["backend_url"] = "https://api.apisrouter.com/v1"
config["deep_think_llm"] = "claude-opus-4-7"    # debate rounds + trade decision
config["quick_think_llm"] = "claude-sonnet-4-6" # analysts, summaries
config["max_debate_rounds"] = 2

ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-07-15")
print(decision)

Вибір моделей глибокого й швидкого мислення.

Апстрим-варіант за замовчуванням поєднує фронтирну модель у глибокому слоті з міні-моделлю в швидкому слоті, що є правильною формою: витрачайте потужність міркування там, де ухвалюється рішення, і об'ємну потужність там, де відбувається читання. Маршрутизація через один ендпоінт робить це поєднання зміною в два рядки між прогонами, тож практичний робочий процес — тримати глибокий слот фіксованим і робити A/B швидкого слоту проти метрик вашого бектесту, а не вгадувати.

  • deep_think_llm несе бичачий/ведмежий дебат, рішення трейдера й перегляд ризику. Мало викликів на прогін, але кожен міркує над повним контекстом аналітиків, а max_debate_rounds множить їх. Тут фронтирна модель міркування (claude-opus-4-7, gpt-5.5) заробляє свої токени.
  • quick_think_llm спрацьовує на кожному кроці аналітика: читання фундаменталів, оцінка настрою, підсумовування новин, складання чернеток звітів. Більшість обсягу запитів прогону тут, тож швидка модель середнього рівня (claude-sonnet-4-6, deepseek-v4-pro) тримає прогони швидкими, не погіршуючи вхідні дані дебату.
  • Навантаження з довгим контекстом, на кшталт подачі повних звітностей чи великих вікон новин аналітикам, — те місце, де варто протестувати gemini-3.1-pro-preview у швидкому слоті.
  • Бектести все посилюють. Серія по 50 тікерах і 20 датах — це 1000 викликів propagate(), тож вибір моделі швидкого мислення, що виглядає незначним на одному прогоні, домінує в рахунку токенів у масштабі серії.

Оплата за фактом · нижче офіційних цін

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

МодельОфіційна цінаНаша ціна
Claude Opus 4.7$5.00 / $25.00 per M$4.00 / $20.00 per M
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Gemini 3.1 Pro Preview$2.00 / $12.00 per M$1.60 / $9.60 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M

Бектестинг у масштабі серії: ключі, фіксація й ліміти.

Щойно налаштування одного прогону працює, поверхня збоїв зміщується до серії. Три звички тримають багатоденний бектест відтворюваним і придатним до налагодження. Фіксуйте точні id моделей. Голі назви моделей у деяких постачальників — це рухомі вказівники, що тихо переміщуються на новіші знімки, а це означає, що бектест, розпочатий у понеділок і завершений у п'ятницю, міг не запускати одну модель. Там, де каталог перелічує варіант з датою, вставте датований id у конфігурацію й зафіксуйте словник конфігурації поруч із результатами, як ви б записали випадкове зерно. Використовуйте один ключ на експеримент. Ключі безкоштовно створювати, і прив'язка ключа до серії перетворює лог використання на книгу обліку вартості експерименту: кількість токенів і витрати на модель, фільтровані точно до прогонів у тій серії. Коли два експерименти діляться ключем, атрибуція витрат постфактум означає grep за таймстампами. Знайте стелю паралельності, перш ніж паралелізувати. propagate() синхронний на тікер-дату, тож серії зазвичай шардуються по процесах. Кожен шард множить частоту запитів насамперед на швидкому слоті, а 429 посеред дебату коштує весь прогін, а не один запит. Піднімайте кількість шардів, спостерігаючи за консоллю, а не запускайте п'ятдесят воркерів з холодного старту; пуловані апстрим-канали піднімають стелю, але не роблять її нескінченною.

Хто спрямовує TradingAgents через шлюз.

  • Бектестери, що прогонюють серії тікер-по-даті. Сотні викликів propagate() на експеримент роблять видимість використання за ключем і єдину білінгову поверхню кориснішими за чотири панелі постачальників.
  • Дослідники, що порівнюють пари моделей. Заміна deep_think_llm між id Claude, GPT і DeepSeek — це редагування конфігурації проти одного ендпоінта, а не новий обліковий запис постачальника на кандидата.
  • Команди, що змішують постачальників по ролях. Claude для дебату, DeepSeek для об'єму аналітиків. Нативний режим провайдера прив'язує прогін до одного постачальника; мультивендорний ендпоінт — ні.
  • Розробники без доступу до білінгу певного постачальника. Доступ на основі поповнення без вимоги картки прибирає залежність від реєстрації на постачальника.
  • Заплановані й CI-прогони. Налаштування лише через середовище означає, що образу раннера потрібен один секрет (OPENAI_COMPATIBLE_API_KEY) замість одного на постачальника.

Перевірте ендпоінт і налагодьте перший прогін.

Перш ніж запускати повний аналіз, підтвердіть, що ендпоінт відповідає моделями, які ви плануєте використати. Однорядковий curl проти /v1/models вашим ключем перелічує кожен адресований id; рядки в deep_think_llm і quick_think_llm мають точно збігатися з цими id. Збої на першому прогоні послідовні. 401 майже завжди означає, що OPENAI_COMPATIBLE_API_KEY був експортований в іншій оболонці, ніж та, що запускає tradingagents, чи не був експортований узагалі; змінні середовища, встановлені в .bashrc, не досягають systemd unit чи cron-завдання, якщо файл unit сам їх не експортує. Помилка model-not-found означає, що рядок id не збігається з каталогом: id точні, включно з суфіксами версій, а вивід /v1/models вище — джерело істини. Помилка з'єднання з встановленим backend_url зазвичай означає, що URL втратив суфікс /v1, оскільки клієнт додає шляхи маршруту на кшталт /chat/completions до будь-якої бази, яку ви даєте. Якщо прогін працює, але здається застряглим на фазі дебату, це нормальна затримка для моделей міркування над довгими контекстами, а не проблема ендпоінта; тримайте debug=True увімкненим, щоб спостерігати за потоком кроків агентів. Справжні таймаути на дуже довгих ходах глибокого мислення — це налаштування на стороні клієнта, варте підняття, перш ніж робити висновок, що бекенд відкинув запит. Щойно запити потечуть, консоль APIsRouter показує модель на запит, кількість токенів і витрати, що для настільки насиченого викликами фреймворку — найшвидший спосіб побачити точно, куди йдуть токени прогону.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $OPENAI_COMPATIBLE_API_KEY" | head -50

Поширені запитання

Чи підтримує TradingAgents моделі Claude й Gemini через один ендпоінт openai_compatible?

Так. У режимі openai_compatible фреймворк надсилає поле model як звичайний рядок на backend_url через /v1/chat/completions. Працює будь-який id, обслуговуваний ендпоінтом, включно з id Claude, Gemini і DeepSeek, у будь-якому зі слотів глибокого чи швидкого мислення.

Який API-ключ використовує TradingAgents з кастомним backend_url?

OPENAI_COMPATIBLE_API_KEY. Провайдер openai_compatible зчитує його із середовища, тож ключ ніколи не з'являється у вашому словнику конфігурації чи файлах коду. OPENAI_API_KEY використовується лише нативним провайдером openai.

Чи можуть deep_think_llm і quick_think_llm бути з різних постачальників у тому самому прогоні?

Через мультивендорний ендпоінт — так: обидва слоти надсилають запити на той самий backend_url, а рядок моделі вирішує постачальника на кожен запит. З нативними провайдерами (openai, anthropic, google, deepseek) прогін прив'язаний до одного постачальника для обох слотів.

Чи потрібен мені акаунт OpenAI після встановлення backend_url?

Ні. Коли llm_provider встановлено на openai_compatible, жоден запит не йде на хости OpenAI, і OPENAI_API_KEY не зчитується. Вам усе ще потрібні облікові дані ринкових даних, які використовує TradingAgents (наприклад, ALPHA_VANTAGE_API_KEY), незалежні від ендпоінта LLM.

Чи поважає інтерактивний CLI кастомний ендпоінт теж?

Так. CLI (tradingagents, чи python -m cli.main) резолвить ту саму конфігурацію, а змінні середовища TRADINGAGENTS_LLM_PROVIDER / TRADINGAGENTS_LLM_BACKEND_URL перевизначають її перед запитом провайдера, тож заплановані чи контейнеризовані прогони CLI не потребують інтерактивного вводу для маршрутизації.

Скільки токенів споживає один аналіз TradingAgents?

Варіюється з max_debate_rounds, кількістю аналітиків і тим, скільки ринкового контексту вони засвоюють; один аналіз тікер-дата зазвичай сягає сотень тисяч токенів, більшість на слоті швидкого мислення. Вигляд використання за ключем у консолі APIsRouter показує точний поділ на прогін, що надійніше за оцінку.