Jalankan ai-hedge-fund di base URL OpenAI-compatible custom.
Updated 2026-07-30
ai-hedge-fund membangun model OpenAI-nya dengan ChatOpenAI dari LangChain dan membaca base URL dari OPENAI_API_BASE. Setel ke https://api.apisrouter.com/v1, export satu key, dan setiap agent analyst di fund merutekan melalui satu endpoint.
Jawaban singkat: OPENAI_API_BASE plus satu key.
Provider OpenAI ai-hedge-fund diinstansiasi sebagai ChatOpenAI(model=model_name, api_key=api_key, base_url=base_url), dan base_url itu berasal dari os.getenv("OPENAI_API_BASE") di src/llm/models.py. Jadi override-nya adalah dua baris di .env: arahkan OPENAI_API_BASE ke https://api.apisrouter.com/v1 dan set OPENAI_API_KEY ke key gateway Anda. Setiap model yang berjalan lewat provider OpenAI sekarang mengirim ke gateway. Perhatikan nama variabelnya dengan teliti: ini adalah OPENAI_API_BASE, konvensi era LangChain, bukan OPENAI_BASE_URL. Meng-export nama yang salah diam-diam diabaikan dan request tetap menuju api.openai.com, yang merupakan penyebab paling umum setup ini terlihat tidak berfungsi.
OPENAI_API_BASE=https://api.apisrouter.com/v1
OPENAI_API_KEY=sk-APIsRouter-...
FINANCIAL_DATASETS_API_KEY=... # market data, unrelated to the LLM endpointBagaimana ai-hedge-fund memilih model dan provider.
ai-hedge-fund (virattt di GitHub, sekitar 62K bintang) mensimulasikan fund sebagai komite agent: persona analyst yang dimodelkan dari investor terkenal, ditambah agent valuation, sentiment, fundamentals, dan technicals, yang menyuapi risk manager dan portfolio manager yang menghasilkan sinyal akhir. Semuanya berbagi satu pilihan model per run, jadi satu run melipatgandakan keputusan model Anda di setiap agent dan setiap ticker. Pemilihan model punya dua jalur. Secara interaktif, menjalankan poetry run python src/main.py --ticker AAPL,MSFT,NVDA tanpa flag model membuka questionary picker. Secara scripted, flag --model menerima nama model, tapi hanya nama yang ada di registry model repo: find_model_by_name() mencari string tersebut di src/llm/api_models.json, dan setiap entri registry membawa display_name, model_name, dan provider. Jika lookup gagal, CLI tidak menebak provider; ia fallback ke interactive picker, yang penting untuk otomasi karena id yang tidak dikenal mengubah run scripted menjadi run yang menunggu input keyboard. Field provider adalah yang menentukan routing. Entri bertanda OpenAI melalui ChatOpenAI dan menghormati OPENAI_API_BASE; entri bertanda Anthropic melalui ChatAnthropic dan ANTHROPIC_API_KEY, sepenuhnya melewati base URL Anda. Itulah insight kunci untuk routing gateway: kolom provider memilih client dan karenanya endpoint, terlepas dari siapa sebenarnya yang melatih model itu.
Setup lengkap: .env plus entri registry per model gateway.
Untuk model yang sudah terdaftar registry di bawah provider OpenAI, override .env saja sudah cukup; string model diteruskan ke endpoint apa adanya. Untuk menjalankan id Claude, DeepSeek, atau Qwen melalui gateway dengan key yang sama, tambahkan entri ke src/llm/api_models.json dengan id katalog sebagai model_name dan, yang krusial, "OpenAI" sebagai provider. Provider memilih client, jadi entri bertanda OpenAI merutekan melalui ChatOpenAI dan OPENAI_API_BASE Anda meskipun model itu sendiri bukan model OpenAI. Entri itu kemudian muncul di interactive picker dan ter-resolve lewat --model di script. Ini adalah edit JSON tiga baris di clone Anda, bukan perubahan kode, dan ini adalah bentuk terdokumentasi yang sudah dipakai registry. Ingat entri provider-native sebagai kontrasnya: memilih model registry bertanda Anthropic akan mencari ANTHROPIC_API_KEY dan langsung ke endpoint Anthropic. Jika niat Anda adalah satu key gateway untuk semuanya, jalankan model Anda lewat entri bertanda OpenAI dan Anda bisa membiarkan key per-vendor sama sekali tidak diset.
{
"display_name": "Claude Sonnet 4.6 (gateway)",
"model_name": "claude-sonnet-4-6",
"provider": "OpenAI"
},
{
"display_name": "DeepSeek V4 Pro (gateway)",
"model_name": "deepseek-v4-pro",
"provider": "OpenAI"
}Memilih model untuk komite agent.
Karena registry membuat setiap kandidat bisa dialamatkan di balik satu flag, evaluasi yang jujur bersifat empiris: jalankan ticker dan tanggal yang sama lewat dua atau tiga model dan bandingkan sinyal serta pengeluarannya. Tampilan penggunaan per-key memberi harga setiap sweep untuk Anda, yang mengubah pilihan model dari perdebatan menjadi pengukuran.
- Satu run adalah banyak verdict. Setiap persona analyst bernalar atas filing dan data harga yang sama per ticker, jadi pilihan model dikalikan dengan jumlah agent kali jumlah ticker. Id reasoning frontier (claude-opus-4-7, gpt-5.5) menaikkan kualitas setiap verdict dengan tagihan token yang terkalikan setara.
- claude-sonnet-4-6 adalah default yang masuk akal: cukup kuat sehingga penalaran persona tetap koheren atas context fundamental yang panjang, diberi harga untuk run yang menyebar ke selusin agent dan sekeranjang ticker.
- deepseek-v4-pro dan qwen3.7-max layak dibenchmark untuk sweep luas, di mana selisih harga per-run berlipat ganda lintas setiap tanggal backtest.
- Apa pun yang Anda pilih, pin id-nya. Sinyal dari snapshot berbeda dari model yang terus bergerak tidak bisa dibandingkan lintas window backtest; gunakan id persis dan catat string model di samping hasil seperti random seed.
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.
| Model | Harga Resmi | Harga 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.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| DeepSeek V4 Pro | $0.43 / $0.87 per M | $0.40 / $0.90 per M |
| Qwen 3.7 Max | $2.50 / $7.50 per M | $2.50 / $7.50 per M |
Mode kegagalan spesifik ai-hedge-fund.
Environment variable yang salah. Repo ini membaca OPENAI_API_BASE. OPENAI_BASE_URL, variabel yang dipakai tool lain, tidak dikonsultasikan, dan mengesetnya tidak melakukan apa-apa selain meyakinkan Anda bahwa override-nya rusak. Jika request masih mengenai api.openai.com, periksa nama variabel dulu sebelum apa pun lainnya. --model dengan id yang tidak terdaftar. find_model_by_name() hanya mengenal entri di api_models.json. Berikan id katalog yang tidak terdaftar dan CLI mencetak pesan not-found dan jatuh ke interactive picker, yang dalam cron job atau run CI berarti hang diam-diam, bukan exit error. Daftarkan id-nya dulu; lalu run scripted meresolusinya secara deterministik. Entri bertanda provider yang melewati gateway. Memilih model registry yang provider-nya Anthropic, Google, atau DeepSeek merutekan lewat client dan key native vendor itu. Jika Anda mengharapkan run muncul di log penggunaan gateway Anda dan tidak muncul, kolom provider dari model yang Anda pilih adalah penjelasannya. Error data yang menyamar sebagai error LLM. Data harga dan fundamentals berasal dari API financial-data yang dikonfigurasi oleh FINANCIAL_DATASETS_API_KEY, layanan yang sepenuhnya terpisah. Key data yang hilang atau habis menggagalkan run sebelum atau di antara panggilan LLM, dan traceback-nya bisa terbaca seperti masalah model. Kedua kredensial gagal secara independen; debug secara independen juga. Prompt interaktif dalam otomasi. Bahkan dengan semuanya terkonfigurasi, lupa flag --model membuka picker. Untuk run unattended, selalu berikan --model dengan id yang terdaftar.
Siapa yang merutekan ai-hedge-fund melalui gateway.
- Backtester yang menyapu ticker dan rentang tanggal, di mana komite agent per ticker per tanggal membuat pengeluaran token jadi biaya dominan dan penggunaan per-key jadi buku besar alami.
- Peneliti yang membandingkan verdict model. Run yang sama di bawah dua id model adalah perubahan flag, dan ketidaksepakatan sinyal antar model itu sendiri adalah data yang menarik.
- Builder yang memperluas repo dengan agent baru yang menginginkan satu endpoint dan satu key di balik berapa pun banyak persona yang mereka tambahkan.
- Developer yang menginginkan reasoning Claude atau DeepSeek di dalam repo yang jalur routing paling bersihnya berbentuk OpenAI, tanpa memelihara key vendor per entri provider.
- 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.
Konfirmasi gateway melayani id yang Anda daftarkan sebelum meluncurkan run; string model_name registry harus cocok persis dengan id yang dilayani. Tangga kegagalan run pertama: 401 berarti OPENAI_API_KEY bukan key gateway di environment tempat poetry benar-benar diluncurkan. Error model-not-found dari gateway berarti model_name entri registry salah ketik relatif terhadap /v1/models. Run yang berhenti untuk meminta input berarti string --model tidak menemukan registry-nya. Error vendor-key (Anthropic, Google) berarti provider entri yang dipilih bukan OpenAI. Dan traceback berbentuk data sebelum output model mana pun menunjuk ke FINANCIAL_DATASETS_API_KEY, bukan jalur LLM. Setelah run selesai, konsol APIsRouter menunjukkan model per request, hitungan token, dan pengeluaran. Run komite adalah puluhan panggilan lintas tahap analyst, risk, dan portfolio, dan tampilan penggunaan adalah cara Anda melihat berapa sebenarnya biaya satu keputusan sebelum Anda menskalakannya ke sweep.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" | head -50Pertanyaan umum
Environment variable mana yang mengatur base URL custom untuk ai-hedge-fund?
OPENAI_API_BASE. Provider OpenAI di src/llm/models.py membangun ChatOpenAI dengan base_url=os.getenv("OPENAI_API_BASE"). OPENAI_BASE_URL tidak dibaca oleh repo ini, jadi gunakan ejaan API_BASE persis seperti itu.
Bisakah ai-hedge-fund menjalankan model Claude atau DeepSeek lewat satu key?
Ya, dengan mendaftarkan id di src/llm/api_models.json dengan provider diset ke "OpenAI". Provider memilih client, jadi entri bertanda OpenAI merutekan lewat ChatOpenAI dan OPENAI_API_BASE Anda, dan id katalog diteruskan ke gateway sebagai string biasa.
Mengapa --model menjatuhkan saya ke interactive picker?
Nilai --model dicari dengan find_model_by_name() terhadap api_models.json. Id yang tidak dikenal tidak ditebak; CLI mencetak pesan not-found dan membuka picker. Tambahkan entri registry untuk id itu dan run scripted akan meresolusinya tanpa prompt.
Apakah saya masih butuh ANTHROPIC_API_KEY atau key vendor lain?
Tidak untuk model yang dirutekan lewat gateway. Key vendor hanya dikonsultasikan oleh entri registry yang bertanda provider vendor itu. Jika setiap model yang Anda jalankan terdaftar di bawah provider OpenAI, key gateway adalah satu-satunya kredensial LLM yang dibutuhkan run.
Apakah setup data pasar berubah saat saya mengubah endpoint LLM?
Tidak. Data harga dan fundamentals mengalir lewat API financial-data yang dikonfigurasi oleh FINANCIAL_DATASETS_API_KEY, yang independen dari base URL LLM. Kedua kredensial gagal di fase run yang berbeda, jadi debug secara terpisah.
Berapa mahal satu run ai-hedge-fund?
Skalanya mengikuti agent dikali ticker: setiap persona analyst, ditambah risk dan portfolio management, bernalar per ticker. Run sekeranjang tunggal biasanya mendarat di puluhan hingga ratusan ribu token, dan sweep backtest melipatgandakannya dengan grid tanggal. Tampilan penggunaan per-key memberi angka persis per run.