Jalankan FinRobot di endpoint OpenAI-compatible custom.

Updated 2026-07-30

FinRobot membaca kredensial LLM-nya dari file AutoGen OAI_CONFIG_LIST yang entrinya menerima key base_url. Tambahkan satu entri yang mengarah ke https://api.apisrouter.com/v1 dengan key gateway, dan agent forecaster, report-writer, serta RAG bisa berjalan di id model apa pun di katalog.

Jawaban singkat: satu entri di OAI_CONFIG_LIST.

Instruksi setup FinRobot meminta Anda mengganti nama OAI_CONFIG_LIST_sample menjadi OAI_CONFIG_LIST dan mengisi kredensial. File itu adalah config list AutoGen standar: array JSON di mana setiap entri menerima model dan api_key, dan opsional base_url, yang sudah didemonstrasikan sample yang dirilis untuk endpoint non-default. Tambahkan entri dengan key gateway Anda dan base_url diset ke https://api.apisrouter.com/v1, dan setiap agent FinRobot yang memuat file itu bisa merutekan lewatnya. Satu jebakan yang menghabiskan waktu orang: tutorial memuat file lewat autogen.config_list_from_json dengan filter_dict yang memilih entri berdasarkan nama model. Jika entri baru Anda mengatakan claude-sonnet-4-6 tapi filter masih meminta id GPT dari sample, entri Anda tersaring keluar dan run gagal dengan kredensial lama. Perbarui filter_dict agar cocok dengan model yang Anda tambahkan, atau hapus filter-nya saat menguji.

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

Bagaimana FinRobot memakai config LLM-nya.

FinRobot (AI4Finance-Foundation di GitHub, sekitar 7.6K bintang) adalah platform AI agent untuk analisis finansial yang dibangun di atas AutoGen (pyautogen 0.2.19 atau lebih baru). Agent-nya adalah workflow yang dikemas: forecaster Market_Analyst yang menarik berita dan fundamentals perusahaan serta memprediksi pergerakan minggu depan, penulis laporan tahunan yang mengubah filing jadi PDF riset ekuitas, dan agent QA retrieval-augmented atas earnings call dan filing SEC. Setiap tutorial membangun bentuk llm_config yang sama: dict yang config_list-nya berasal dari autogen.config_list_from_json yang membaca file OAI_CONFIG_LIST. llm_config itu diserahkan ke wrapper class seperti SingleAssistant dan SingleAssistantShadow dari finrobot.agents.workflow, yang memiliki agent AutoGen di baliknya. Keputusan endpoint karenanya hidup sepenuhnya di file JSON: client OpenAI AutoGen mengirim request /v1/chat/completions ke base_url apa pun yang dibawa entri yang dipilih dan meneruskan field model sebagai string biasa. String biasa itulah kemenangan praktisnya. Saat endpoint di balik base_url melayani banyak vendor, id Claude, DeepSeek, atau Qwen menumpang lewat config berbentuk-OpenAI yang sama tanpa FinRobot menyadarinya, dan menukar model analisis menjadi edit JSON satu baris plus filter_dict yang sesuai.

Setup lengkap: file config, filter, dan key data.

FinRobot membagi kredensial ke dua file, dan hanya satu yang berkaitan dengan LLM. OAI_CONFIG_LIST menyimpan endpoint dan key model. config_api_keys menyimpan kredensial data-pasar (FINNHUB_API_KEY, FMP_API_KEY, SEC_API_KEY, dan key sosial), dimuat terpisah lewat register_keys_from_json. Merutekan LLM lewat gateway mengubah file pertama dan membiarkan yang kedua tidak tersentuh, jadi penarikan berita, fundamentals, dan filing berperilaku persis seperti sebelumnya. Pola tutorial di bawah adalah struktur notebook forecaster dengan entri gateway yang dipilih. llm_config yang sama berfungsi untuk tutorial laporan-tahunan dan RAG, yang hanya berbeda pada workflow class mana yang mereka instansiasi.

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.")

Memilih model per workflow FinRobot.

Loop eksperimen yang bersih: tetapkan ticker dan rentang tanggal, jalankan workflow yang sama sekali per entri kandidat, dan bandingkan output berdampingan. Di balik satu endpoint, setiap kandidat hanya edit filter_dict, dan log penggunaan per-key memberi Anda tagihan token per kandidat tanpa kerja spreadsheet.

  • Penulis laporan tahunan adalah pekerjaan reasoning terberat: ia membaca bagian filing, mensintesis tesis investasi, dan menyusun draf laporan terstruktur. claude-opus-4-7 atau gpt-5.5 pada workflow itu adalah titik di mana kualitas output berubah secara terlihat.
  • Market forecaster adalah tugas yang lebih pendek dan berulang atas berita dan fundamentals. claude-sonnet-4-6 atau deepseek-v4-pro menanganinya dengan baik, dan penting saat Anda menjalankannya lintas watchlist setiap hari.
  • RAG QA atas earnings call adalah retrieval plus sintesis atas kutipan panjang, yang mendukung id long-context; gemini-3.1-pro-preview layak diuji terhadap claude-sonnet-4-6 di sana.
  • Karena entri dipilih lewat filter_dict, Anda bisa menyimpan satu file dengan entri frontier dan entri cepat terhadap base_url yang sama dan memilih per notebook, alih-alih mengedit kredensial per run.
  • Id model adalah string persis. FinRobot meneruskannya tanpa validasi, jadi listing /v1/models endpoint adalah ejaan yang otoritatif.

Bayar sesuai pemakaian · di bawah harga resmi

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

ModelHarga ResmiHarga 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

Mode kegagalan spesifik FinRobot.

Ketidakcocokan filter_dict adalah masalah terbesar. config_list_from_json hanya mengembalikan entri yang model-nya cocok dengan filter; filter yang tidak cocok dengan apa pun memunculkan error tentang config list kosong, dan filter yang cocok dengan entri sisa dari sample mengirim request ke OpenAI dengan key placeholder, yang muncul sebagai 401 dari host yang salah. Saat perubahan routing terlihat tidak berlaku, cetak dulu config_list yang teresolusi. Path relatif adalah yang kedua. Tutorial memuat "../OAI_CONFIG_LIST" karena notebook duduk satu level di bawah root repo; script di root justru menginginkan "OAI_CONFIG_LIST", dan AutoGen juga menerima environment variable OAI_CONFIG_LIST yang membawa string JSON, yang menghindari masalah path di container. Baris komentar adalah yang ketiga. Instruksi setup memberi tahu Anda untuk menghapus catatan komentar dari file sample karena membuat JSON tidak valid; JSONDecodeError saat startup berarti komentar liar masih bertahan. Kredensial data gagal secara independen. Jika agent mengobrol dengan baik tapi berita atau fundamentals kembali kosong, itu adalah masalah config_api_keys (Finnhub, FMP, SEC), bukan masalah endpoint. Dan modul ekuitas FinRobot Pro yang terpisah mengonfigurasi key-nya lewat config.ini sebagai gantinya; per Juli 2026 pengaturan terdokumentasinya mencakup openai_api_key tapi tidak ada override base-URL, jadi perlakukan modul itu sebagai vendor-langsung sampai upstream mendokumentasikannya.

Siapa yang merutekan FinRobot melalui gateway.

  • Analyst yang menghasilkan laporan ekuitas lintas daftar cakupan. Context filing yang panjang per laporan membuat selisih harga per-model jadi material, dan satu endpoint membuat model jadi pilihan per-run.
  • Tim quant yang menjalankan forecaster setiap hari atas watchlist, di mana id mid-tier cepat menjaga tagihan berulang tetap datar tanpa menulis ulang workflow.
  • Peneliti yang membandingkan keluarga model pada tugas finansial yang identik. Setiap kandidat hanya satu entri config, bukan akun vendor dan penggantian SDK.
  • Tim yang menstandardisasi stack berbasis AutoGen. FinRobot berbagi konvensi OAI_CONFIG_LIST dengan proyek AutoGen lain, jadi satu format entri gateway melayani semuanya.
  • Developer tanpa akses ke billing vendor tertentu. Akses berbasis top-up tanpa syarat kartu menghilangkan ketergantungan sign-up per provider.

Verifikasi endpoint dan debug run pertama.

Daftar model yang bisa dialamatkan key Anda sebelum membuka notebook; setiap string model di OAI_CONFIG_LIST dan setiap nilai filter_dict harus cocok persis dengan id yang dilayani. Lalu jalankan chat sesingkat mungkin lewat SingleAssistant dan amati konsolnya. 401 berarti api_key entri yang dipilih bukan milik endpoint di base_url-nya; periksa entri mana yang sebenarnya dipilih filter. Error model-not-found adalah salah ketik id di entri. Error koneksi biasanya berarti base_url kehilangan suffix /v1-nya. Jika agent berputar tanpa hasil tool, key data di config_api_keys adalah tersangkanya, bukan endpoint LLM. Setelah request mengalir, konsol APIsRouter menunjukkan model per request, hitungan token, dan pengeluaran. Run penulisan-laporan adalah percakapan multi-giliran yang panjang, dan tampilan penggunaan menunjukkan berapa sebenarnya biaya satu laporan sebelum Anda menjadwalkan lima puluh laporan lainnya.

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

Pertanyaan umum

Apakah FinRobot mendukung endpoint OpenAI-compatible custom?

Ya. FinRobot membaca entri OAI_CONFIG_LIST bergaya AutoGen, dan entri menerima key base_url di samping model dan api_key. Arahkan base_url ke gateway, jaga filter_dict Anda cocok dengan model entrinya, dan agent akan merutekan lewatnya.

Bisakah agent FinRobot berjalan di model Claude, DeepSeek, atau Qwen?

Ya. AutoGen meneruskan field model sebagai string biasa lewat /v1/chat/completions, jadi id apa pun yang dilayani endpoint berfungsi. Nama model di entri dan di filter_dict hanya perlu cocok persis dengan id katalog.

Mengapa FinRobot mengabaikan entri OAI_CONFIG_LIST baru saya?

Hampir selalu filter_dict. Tutorial menyaring entri berdasarkan nama model, jadi entri yang model-nya tidak cocok dengan filter dikeluarkan secara diam-diam. Perbarui filter_dict ke id model baru Anda, atau muat file tanpa filter saat menguji.

Apakah key Finnhub, FMP, dan SEC saya berubah saat saya mengubah endpoint LLM?

Tidak. Kredensial data-pasar hidup di config_api_keys dan dimuat lewat register_keys_from_json, sepenuhnya terpisah dari OAI_CONFIG_LIST. Merutekan LLM lewat gateway tidak menyentuh pipeline data.

Versi AutoGen mana yang ini berlaku?

FinRobot mematok pyautogen 0.2.19 atau lebih baru dan memakai loader config_list_from_json bergaya 0.2. Key base_url di entri config adalah standar di seluruh generasi itu, jadi tidak ada perubahan kode FinRobot yang dibutuhkan.

Apakah modul ekuitas FinRobot Pro juga menghormati base_url?

Tidak sesuai yang terdokumentasi. config.ini-nya mengekspos openai_api_key di bawah API_KEYS tapi tidak ada override endpoint per Juli 2026. Routing OAI_CONFIG_LIST yang dijelaskan di sini berlaku untuk agent dan tutorial utama FinRobot.