Patakbuhin ang FinRobot sa isang custom OpenAI-compatible endpoint.

Updated 2026-07-30

Binabasa ng FinRobot ang mga credential ng LLM nito mula sa isang AutoGen OAI_CONFIG_LIST file na tumatanggap ng base_url key sa mga entry nito. Magdagdag ng isang entry na nakaturo sa https://api.apisrouter.com/v1 gamit ang isang gateway key, at makakatakbo ang forecaster, report-writer, at RAG agents sa anumang model id ng katalogo.

Mabilisang sagot: isang entry sa OAI_CONFIG_LIST.

Ang mga setup instructions ng FinRobot ay nagpapapangalan sa iyo ng OAI_CONFIG_LIST_sample tungo sa OAI_CONFIG_LIST at pagpupuno ng mga credential. Isang standard AutoGen config list ang file na iyon: isang JSON array kung saan tumatanggap ang bawat entry ng model at api_key, at opsyonal na base_url, na ipinapakita na ng shipped sample para sa mga non-default na endpoint. Magdagdag ng entry gamit ang gateway key mo at itakda ang base_url sa https://api.apisrouter.com/v1, at makakaruta rito ang bawat FinRobot agent na nagloload ng file. Isang bagay na nagsasayang ng oras: nilo-load ng mga tutorial ang file sa pamamagitan ng autogen.config_list_from_json gamit ang isang filter_dict na pumipili ng mga entry ayon sa model name. Kung sinasabi ng bagong entry mo na claude-sonnet-4-6 pero hinahanap pa rin ng filter ang GPT id ng sample, na-filter out ang entry mo at mabibigo ang run laban sa lumang credentials. I-update ang filter_dict para tumugma sa model na idinagdag mo, o alisin ang filter habang nagte-test.

[
    {
        "model": "claude-sonnet-4-6",
        "api_key": "sk-YOUR-APISROUTER-KEY",
        "base_url": "https://api.apisrouter.com/v1"
    }
]

Paano ginagamit ng FinRobot ang LLM config nito.

Ang FinRobot (AI4Finance-Foundation sa GitHub, humigit-kumulang 7.6K stars) ay isang AI agent platform para sa financial analysis na binuo sa AutoGen (pyautogen 0.2.19 pataas). Mga naka-package na workflow ang mga agent nito: isang Market_Analyst forecaster na kumukuha ng company news at fundamentals at nagpe-predict ng galaw sa susunod na linggo, isang annual-report writer na ginagawang equity research PDF ang mga filing, at retrieval-augmented QA agents sa ibabaw ng earnings calls at SEC filings. Iisang hugis ng llm_config ang binubuo ng bawat tutorial: isang dict kung saan ang config_list ay nanggagaling sa autogen.config_list_from_json na nagbabasa sa OAI_CONFIG_LIST file. Ipinapasa ang llm_config na iyon sa mga wrapper class tulad ng SingleAssistant at SingleAssistantShadow mula sa finrobot.agents.workflow, na siyang nagmamay-ari sa mga underlying AutoGen agent. Ang desisyon sa endpoint ay nasa loob lamang ng JSON file: ipinapadala ng OpenAI client ng AutoGen ang mga /v1/chat/completions request sa anumang base_url na dala ng napiling entry at ipinapasa ang model field bilang plain string. Ang plain string na iyon ang praktikal na panalo. Kapag maraming vendor ang si-serve ng endpoint sa likod ng base_url, tumatakbo ang isang Claude, DeepSeek, o Qwen id sa parehong OpenAI-shaped na config nang hindi napapansin ng FinRobot, at ang pagpapalit ng analysis model ay nagiging isang linyang edit sa JSON kasama ang tumutugmang filter_dict.

Buong setup: config file, filter, at data keys.

Hinahati ng FinRobot ang mga credential sa dalawang file, at isa lamang dito ang may kinalaman sa LLM. Nag-iimbak ang OAI_CONFIG_LIST ng mga model endpoint at key. Nag-iimbak ang config_api_keys ng mga market-data credential (FINNHUB_API_KEY, FMP_API_KEY, SEC_API_KEY, at social keys), na hiwalay na nilo-load sa pamamagitan ng register_keys_from_json. Ang pag-ruta ng LLM sa pamamagitan ng isang gateway ay nagbabago sa unang file at hindi ginagalaw ang pangalawa, kaya kumikilos ang news pulls, fundamentals, at filings nang eksaktong tulad ng dati. Ang tutorial pattern sa ibaba ay ang istruktura ng forecaster notebook na may napiling gateway entry. Gumagana ang parehong llm_config para sa annual-report at RAG tutorials, na magkaiba lamang sa kung aling workflow class ang kanilang ini-instantiate.

import autogen
from finrobot.utils import register_keys_from_json
from finrobot.agents.workflow import SingleAssistant

llm_config = {
    "config_list": autogen.config_list_from_json(
        "../OAI_CONFIG_LIST",
        filter_dict={"model": ["claude-sonnet-4-6"]},  # match your entry
    ),
    "timeout": 120,
    "temperature": 0,
}

register_keys_from_json("../config_api_keys")  # finnhub/fmp/sec data keys

assistant = SingleAssistant("Market_Analyst", llm_config,
                            human_input_mode="NEVER")
assistant.chat("Analyze NVDA news this week and predict next week's movement.")

Pagpili ng mga model per FinRobot workflow.

Ang malinis na experiment loop: ayusin ang ticker at date range, patakbuhin ang parehong workflow nang isang beses per candidate entry, at ihambing ang mga output nang magkatabi. Sa likod ng isang endpoint, isang filter_dict edit lang ang bawat candidate, at ipinapakita ng per-key usage log ang token bill per candidate nang walang gawaing spreadsheet.

  • Ang annual-report writer ang pinakamabigat na reasoning job: binabasa nito ang mga seksyon ng filing, nagsasama-sama ng investment thesis, at gumagawa ng structured na report. Doon halatang nagbabago ang kalidad ng output kapag claude-opus-4-7 o gpt-5.5 ang ginamit sa workflow na iyon.
  • Mas maikli at umuulit na gawain ang market forecaster sa news at fundamentals. Kayang-kaya ito ng claude-sonnet-4-6 o deepseek-v4-pro, at mahalaga ito kapag pinapatakbo mo ito araw-araw sa isang watchlist.
  • Retrieval kasama ang synthesis sa mahahabang excerpt ang RAG QA sa earnings calls, na nakikinabang sa mga long-context id; sulit subukan ang gemini-3.1-pro-preview laban sa claude-sonnet-4-6 doon.
  • Dahil pinipili ang mga entry sa pamamagitan ng filter_dict, maaari kang magtago ng isang file na may frontier entry at fast entry laban sa parehong base_url at pumili per notebook, sa halip na baguhin ang credentials per run.
  • Eksaktong strings ang mga model id. Ipinapasa ito ng FinRobot nang walang validation, kaya ang /v1/models listing ng endpoint ang authoritative na baybay.

Pay-as-you-go · mas mababa sa opisyal na presyo

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

ModelOpisyal na PresyoAming Presyo
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.4$2.50 / $15.00 per M$2.00 / $12.00 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Gemini 3.1 Pro Preview$2.00 / $12.00 per M$1.60 / $9.60 per M

Mga failure mode na specific sa FinRobot.

Ang filter_dict mismatch ang pinakamalaking isyu. Nagbabalik lamang ang config_list_from_json ng mga entry na tumutugma ang model sa filter; ang isang filter na walang tinutugma ay nagbubunga ng error tungkol sa isang walang laman na config list, at ang isang filter na tumutugma sa mga naiwang entry ng sample ay nagpapadala ng mga request sa OpenAI gamit ang placeholder keys, na lumalabas bilang 401 mula sa maling host. Kapag mukhang hindi nag-e-effect ang mga pagbabago sa routing, i-print muna ang na-resolve na config_list. Pangalawa ang relative paths. Nilo-load ng mga tutorial ang "../OAI_CONFIG_LIST" dahil isang antas sa ibaba ng repo root ang mga notebook; gusto ng isang script sa root ang "OAI_CONFIG_LIST" sa halip, at tinatanggap din ng AutoGen ang OAI_CONFIG_LIST environment variable na may dalang JSON string, na iniiwasan ang mga isyu sa path sa mga container. Pangatlo ang mga comment line. Sinasabi ng setup instructions na alisin ang mga comment note mula sa sample files dahil ginagawa nitong invalid ang JSON; nangangahulugan ang isang JSONDecodeError sa startup na may nakaligtas na comment. Nabibigo nang hiwalay ang data credentials. Kung normal ang usapan ng agent pero walang laman ang news o fundamentals, isyu ito sa config_api_keys (Finnhub, FMP, SEC), hindi sa endpoint. At ang hiwalay na FinRobot Pro equity module ay nagko-configure ng mga key nito sa pamamagitan ng config.ini sa halip; noong Hulyo 2026, sinasaklaw ng naka-document na settings nito ang openai_api_key pero walang base-URL override, kaya ituring ang module na iyon bilang direct-vendor hangga't hindi ito dinodokumento ng upstream.

Sino ang nagru-route ng FinRobot sa pamamagitan ng isang gateway.

  • Mga analyst na gumagawa ng equity reports sa buong coverage list. Ginagawang materyal ng mahahabang filing context per report ang pagkakaiba sa presyo per model, at ginagawang per-run na desisyon ng isang endpoint ang model.
  • Mga quant team na nagpapatakbo ng forecaster araw-araw sa isang watchlist, kung saan pinapanatili ng isang mabilis na mid-tier id na patag ang umuulit na bill nang hindi isinusulat ulit ang workflow.
  • Mga mananaliksik na naghahambing ng model families sa magkatulad na financial tasks. Isang config entry ang bawat kandidato, hindi vendor account at SDK swap.
  • Mga team na nagpapareho ng mga AutoGen-based na stack. Ibinabahagi ng FinRobot ang convention ng OAI_CONFIG_LIST sa ibang AutoGen projects, kaya isang format ng gateway entry ang naglilingkod sa lahat ng ito.
  • Mga developer na walang access sa billing ng isang partikular na vendor. Ang top-up based na access na walang kailangang card ay inaalis ang per-provider na sign-up dependency.

I-verify ang endpoint at i-debug ang unang run.

Ilista muna ang mga model na maaabot ng key mo bago magbukas ng notebook; dapat eksaktong tumugma ang bawat model string sa OAI_CONFIG_LIST at bawat filter_dict value sa isang si-serve na id. Pagkatapos, patakbuhin ang pinakamaikling posibleng chat sa pamamagitan ng SingleAssistant at panoorin ang console. Ang ibig sabihin ng 401 ay hindi kabilang sa endpoint sa base_url nito ang api_key ng napiling entry; tingnan kung aling entry talaga ang pinili ng filter. Ang isang model-not-found na error ay isang typo sa id sa loob ng entry. Karaniwang nangangahulugan ang connection error na nawala ang /v1 suffix ng base_url. Kung umiikot ang agent nang walang tool results, ang data keys sa config_api_keys ang mga suspek, hindi ang LLM endpoint. Kapag dumadaloy na ang mga request, ipinapakita ng APIsRouter console ang per-request na model, token counts, at gastos. Mahahaba, multi-turn na usapan ang mga report-writing run, at ipinapakita ng usage view kung magkano talaga ang gastos ng isang report bago ka mag-schedule ng limampu nito.

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

Mga madalas itanong

Sinusuportahan ba ng FinRobot ang isang custom OpenAI-compatible endpoint?

Oo. Binabasa ng FinRobot ang mga entry na AutoGen-style na OAI_CONFIG_LIST, at tumatanggap ang mga entry ng base_url key kasama ng model at api_key. Ituro ang base_url sa gateway, panatilihing tumutugma ang filter_dict mo sa model ng entry, at maru-ruta ang mga agent sa pamamagitan nito.

Maaari bang tumakbo ang mga FinRobot agent sa Claude, DeepSeek, o Qwen models?

Oo. Ipinapasa ng AutoGen ang model field bilang plain string sa pamamagitan ng /v1/chat/completions, kaya gumagana ang anumang id na si-serve ng endpoint. Ang model name sa entry at sa filter_dict ay kailangan lamang na eksaktong tumugma sa id ng katalogo.

Bakit binabalewala ng FinRobot ang bago kong OAI_CONFIG_LIST entry?

Halos palaging ang filter_dict. Sina-filter ng mga tutorial ang mga entry ayon sa model name, kaya ang isang entry na hindi tumutugma ang model sa filter ay tahimik na na-eexclude. I-update ang filter_dict sa bago mong model id, o i-load ang file nang walang filter habang nagte-test.

Nagbabago ba ang aking Finnhub, FMP, at SEC keys kapag binago ko ang LLM endpoint?

Hindi. Nananatili ang market-data credentials sa config_api_keys at nilo-load sa pamamagitan ng register_keys_from_json, ganap na hiwalay sa OAI_CONFIG_LIST. Hindi ginagalaw ng pag-ruta ng LLM sa pamamagitan ng gateway ang data pipeline.

Aling AutoGen version ang saklaw nito?

Pinipin ng FinRobot ang pyautogen 0.2.19 pataas at gumagamit ng 0.2-style na config_list_from_json loader. Standard sa henerasyong iyon ang base_url key sa mga config entry, kaya walang kailangang pagbabago sa code ng FinRobot.

Iginagalang din ba ng FinRobot Pro equity module ang base_url?

Hindi, sa nadokumentong bahagi. Ipinapakita ng config.ini nito ang openai_api_key sa ilalim ng API_KEYS pero walang endpoint override sa Hulyo 2026. Ang OAI_CONFIG_LIST routing na inilarawan dito ay para sa pangunahing FinRobot agents at tutorials.