Jalankan FinRobot pada endpoint serasi OpenAI custom.

Updated 2026-07-30

FinRobot membaca kelayakan LLM-nya daripada fail OAI_CONFIG_LIST AutoGen yang entrinya menerima kunci base_url. Tambah satu entri yang menunjuk ke https://api.apisrouter.com/v1 dengan kunci gateway, dan agent forecaster, penulis laporan, serta RAG boleh berjalan pada mana-mana id model dalam katalog.

Jawapan pantas: satu entri dalam OAI_CONFIG_LIST.

Arahan persediaan FinRobot memberitahu anda menamakan semula OAI_CONFIG_LIST_sample kepada OAI_CONFIG_LIST dan mengisi kelayakan. Fail itu adalah senarai config AutoGen standard: tatasusunan JSON di mana setiap entri mengambil model dan api_key, dan secara pilihan base_url, yang sudah ditunjukkan sampel yang dihantar untuk endpoint bukan-lalai. Tambah entri dengan kunci gateway anda dan base_url ditetapkan kepada https://api.apisrouter.com/v1, dan setiap agent FinRobot yang memuatkan fail itu boleh menghalakan melaluinya. Satu perangkap yang membazir masa orang: tutorial memuatkan fail melalui autogen.config_list_from_json dengan filter_dict yang memilih entri mengikut nama model. Jika entri baharu anda berkata claude-sonnet-4-6 tetapi filter masih meminta id GPT sampel, entri anda ditapis keluar dan larian gagal pada kelayakan lama. Kemas kini filter_dict untuk sepadan dengan model yang anda tambah, atau gugurkan filter semasa menguji.

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

Bagaimana FinRobot menggunakan config LLM-nya.

FinRobot (AI4Finance-Foundation di GitHub, lebih kurang 7.6K bintang) adalah platform agent AI untuk analisis kewangan dibina atas AutoGen (pyautogen 0.2.19 atau lebih baharu). Agent-nya adalah aliran kerja terbungkus: forecaster Market_Analyst yang menarik berita syarikat dan fundamental serta meramal pergerakan minggu depan, penulis laporan tahunan yang menukar failing menjadi PDF penyelidikan ekuiti, dan agent QA berasaskan-retrieval atas panggilan pendapatan dan failing SEC. Setiap tutorial membina bentuk llm_config yang sama: dict yang config_list-nya datang daripada autogen.config_list_from_json membaca fail OAI_CONFIG_LIST. llm_config itu diserahkan kepada kelas wrapper seperti SingleAssistant dan SingleAssistantShadow daripada finrobot.agents.workflow, yang memiliki agent AutoGen di bawahnya. Keputusan endpoint justeru tinggal sepenuhnya dalam fail JSON: klien OpenAI AutoGen menghantar permintaan /v1/chat/completions kepada apa sahaja base_url yang dibawa entri yang dipilih dan meneruskan medan model sebagai rentetan biasa. Rentetan biasa itu adalah kemenangan praktikal. Apabila endpoint di sebalik base_url melayani berbilang vendor, id Claude, DeepSeek, atau Qwen menunggang melalui config berbentuk-OpenAI yang sama tanpa FinRobot menyedarinya, dan menukar model analisis menjadi suntingan JSON satu baris ditambah filter_dict yang sepadan.

Persediaan penuh: fail config, filter, dan kunci data.

FinRobot membahagikan kelayakan merentasi dua fail, dan hanya satu daripadanya berkaitan LLM. OAI_CONFIG_LIST memegang endpoint dan kunci model. config_api_keys memegang kelayakan data-pasaran (FINNHUB_API_KEY, FMP_API_KEY, SEC_API_KEY, dan kunci sosial), dimuatkan secara berasingan melalui register_keys_from_json. Menghalakan LLM melalui gateway menukar fail pertama dan membiarkan yang kedua tidak disentuh, jadi tarikan berita, fundamental, dan failing berkelakuan tepat seperti sebelumnya. Corak tutorial di bawah adalah struktur notebook forecaster dengan entri gateway dipilih. llm_config yang sama berfungsi untuk tutorial laporan-tahunan dan RAG, yang hanya berbeza pada kelas aliran kerja mana yang mereka bina.

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"]},  # padankan entri anda
    ),
    "timeout": 120,
    "temperature": 0,
}

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

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

Memilih model per aliran kerja FinRobot.

Gelung eksperimen yang bersih: tetapkan ticker dan julat tarikh, jalankan aliran kerja yang sama sekali per entri calon, dan bandingkan output bersebelahan. Di sebalik satu endpoint, setiap calon adalah suntingan filter_dict, dan log penggunaan per-kunci memberikan bil token per calon tanpa kerja hamparan.

  • Penulis laporan tahunan adalah kerja penaakulan paling berat: ia membaca bahagian failing, mensintesis tesis pelaburan, dan merangka laporan berstruktur. claude-opus-4-7 atau gpt-5.5 dalam aliran kerja itu adalah tempat kualiti output berubah dengan ketara.
  • Forecaster pasaran adalah tugas berulang yang lebih pendek atas berita dan fundamental. claude-sonnet-4-6 atau deepseek-v4-pro mengendalikannya dengan baik, dan penting apabila anda menjalankannya harian merentasi senarai pantau.
  • QA RAG atas panggilan pendapatan adalah retrieval ditambah sintesis atas petikan panjang, yang menggemari id konteks-panjang; gemini-3.1-pro-preview berbaloi diuji berbanding claude-sonnet-4-6 di situ.
  • Kerana entri dipilih melalui filter_dict, anda boleh menyimpan satu fail dengan entri frontier dan entri pantas terhadap base_url yang sama dan memilih per notebook, berbanding menyunting kelayakan per larian.
  • Id model adalah rentetan tepat. FinRobot menerusinya tanpa pengesahan, jadi senarai /v1/models endpoint adalah ejaan berautoriti.

Bayar mengikut penggunaan · bawah harga rasmi

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

ModelHarga RasmiHarga Kami
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

Mod kegagalan khusus FinRobot.

Ketidakpadanan filter_dict adalah yang paling besar. config_list_from_json hanya mengembalikan entri yang modelnya sepadan dengan filter; filter yang tidak sepadan dengan apa-apa menaikkan ralat tentang senarai config kosong, dan filter yang sepadan dengan entri lama sampel menghantar permintaan ke OpenAI dengan kunci placeholder, yang muncul sebagai 401 daripada hos yang salah. Apabila perubahan penghalaan tidak kelihatan berkuat kuasa, cetak config_list yang diselesaikan dahulu. Laluan relatif adalah yang kedua. Tutorial memuatkan "../OAI_CONFIG_LIST" kerana notebook duduk satu tahap di bawah root repo; skrip di root mahukan "OAI_CONFIG_LIST" sebaliknya, dan AutoGen juga menerima pembolehubah environment OAI_CONFIG_LIST yang membawa rentetan JSON, yang mengelakkan isu laluan dalam kontainer. Baris komen adalah yang ketiga. Arahan persediaan memberitahu anda membuang nota komen daripada fail sampel kerana ia menjadikan JSON tidak sah; JSONDecodeError semasa startup bermaksud komen liar terselamat. Kelayakan data gagal secara berasingan. Jika agent bersembang dengan baik tetapi berita atau fundamental kembali kosong, itu adalah masalah config_api_keys (Finnhub, FMP, SEC), bukan masalah endpoint. Dan modul ekuiti FinRobot Pro yang berasingan mengkonfigurasikan kuncinya melalui config.ini sebaliknya; setakat Julai 2026, tetapannya yang didokumentasikan merangkumi openai_api_key tetapi tiada override base-URL, jadi anggap modul itu vendor-terus sehingga upstream mendokumentasikan satu.

Siapa yang menghalakan FinRobot melalui gateway.

  • Penganalisis yang menjana laporan ekuiti merentasi senarai liputan. Konteks failing panjang per laporan menjadikan perbezaan harga per-model penting, dan satu endpoint menjadikan model pilihan per-larian.
  • Pasukan kuant yang menjalankan forecaster harian atas senarai pantau, di mana id tier-pertengahan pantas mengekalkan bil berulang rata tanpa menulis semula aliran kerja.
  • Penyelidik yang membandingkan keluarga model pada tugas kewangan yang serupa. Setiap calon adalah satu entri config, bukan akaun vendor dan pertukaran SDK.
  • Pasukan yang menyeragamkan stack berasaskan AutoGen. FinRobot berkongsi konvensyen OAI_CONFIG_LIST dengan projek AutoGen lain, jadi satu format entri gateway melayani semuanya.
  • Pembangun tanpa akses kepada pengebilan vendor tertentu. Akses berasaskan top-up tanpa keperluan kad menghapuskan kebergantungan pendaftaran setiap penyedia.

Sahkan endpoint dan nyahpepijat larian pertama.

Senaraikan model yang boleh dicapai kunci anda sebelum membuka notebook; setiap rentetan model dalam OAI_CONFIG_LIST dan setiap nilai filter_dict mesti sepadan tepat dengan id yang dilayani. Kemudian jalankan chat sesingkat mungkin melalui SingleAssistant dan perhatikan konsol. 401 bermaksud api_key entri yang dipilih tidak dimiliki endpoint dalam base_url-nya; semak entri mana yang sebenarnya dipilih filter. Ralat model-not-found adalah kesilapan taip id dalam entri. Ralat sambungan biasanya bermaksud base_url kehilangan akhiran /v1-nya. Jika agent berulang tanpa keputusan alatan, kunci data dalam config_api_keys adalah suspek, bukan endpoint LLM. Sebaik sahaja permintaan mengalir, konsol APIsRouter menunjukkan model per permintaan, kiraan token, dan perbelanjaan. Larian penulisan-laporan adalah perbualan multi-giliran yang panjang, dan pandangan penggunaan menunjukkan kos sebenar satu laporan sebelum anda menjadualkan lima puluh daripadanya.

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

Soalan lazim

Adakah FinRobot menyokong endpoint serasi OpenAI custom?

Ya. FinRobot membaca entri OAI_CONFIG_LIST bergaya AutoGen, dan entri menerima kunci base_url bersebelahan model dan api_key. Arahkan base_url ke gateway, kekalkan filter_dict anda sepadan dengan model entri itu, dan agent menghalakan melaluinya.

Bolehkah agent FinRobot berjalan pada model Claude, DeepSeek, atau Qwen?

Ya. AutoGen meneruskan medan model sebagai rentetan biasa melalui /v1/chat/completions, jadi mana-mana id yang dilayani endpoint berfungsi. Nama model dalam entri dan dalam filter_dict hanya perlu sepadan tepat dengan id katalog.

Mengapa FinRobot mengabaikan entri OAI_CONFIG_LIST baharu saya?

Hampir selalu filter_dict. Tutorial menapis entri mengikut nama model, jadi entri yang modelnya tidak sepadan dengan filter dikecualikan secara senyap. Kemas kini filter_dict kepada id model baharu anda, atau muatkan fail tanpa filter semasa menguji.

Adakah kunci Finnhub, FMP, dan SEC saya berubah apabila saya menukar endpoint LLM?

Tidak. Kelayakan data-pasaran tinggal dalam config_api_keys dan dimuatkan melalui register_keys_from_json, sama sekali berasingan daripada OAI_CONFIG_LIST. Menghalakan LLM melalui gateway tidak menyentuh paip data.

Versi AutoGen mana yang terpakai di sini?

FinRobot mengunci pyautogen 0.2.19 atau lebih baharu dan menggunakan loader config_list_from_json gaya 0.2. Kunci base_url dalam entri config adalah standard merentasi generasi itu, jadi tiada perubahan kod FinRobot diperlukan.

Adakah modul ekuiti FinRobot Pro turut menghormati base_url?

Tidak seperti yang didokumentasikan. config.ini-nya mendedahkan openai_api_key di bawah API_KEYS tetapi tiada override endpoint setakat Julai 2026. Penghalaan OAI_CONFIG_LIST yang diterangkan di sini terpakai kepada agent dan tutorial FinRobot utama.