Setup Custom API ai-hedge-fund
Updated 2026-09-05
Pemilihan provider datang sebelum konfigurasi endpoint. Ikuti factory dan registry model saat ini, lalu validasi data, output agen, dan evaluasi sebagai tahap terpisah.
Identifikasi jalur aplikasi saat ini
Untuk aplikasi ai-hedge-fund saat ini, konfirmasikan provider registry model sebelum menetapkan OPENAI_API_BASE. Pada revision fc1bf250, factory client berada di hedge_fund/llm/client.py dan membaca registry di sebelahnya. Tutorial lama yang hanya merujuk src/llm/models.py menjelaskan jalur aplikasi berbeda. Pin checkout Anda dan gunakan entrypoint yang mengimpor factory saat ini. Mulai dengan preflight provider di bawah, lalu jalankan client proyek sebelum mengumpulkan data keuangan untuk siklus riset lengkap.
Tentukan provider sebelum menetapkan base URL
make_llm memilih provider dari pengenal model yang dipilih. Cabang OpenAI meneruskan OPENAI_API_BASE ke ChatOpenAI dan membaca API key yang sesuai. Pengenal yang tidak dikenal fallback ke transport Anthropic dalam source yang ditinjau, jadi sekadar mengekspor base URL OpenAI tidak cukup. Pastikan lebih dulu bahwa model ID endpoint yang tepat terdaftar di bawah OpenAI. Di sini OpenAI mengidentifikasi adapter transport; itu tidak mengesahkan vendor model yang mendasarinya. Jangan mengubah entri registry global jika belum memahami setiap workflow yang menggunakannya.
| Pengaturan | Tujuan | Pemeriksaan |
|---|---|---|
| HEDGE_FUND_LLM_MODEL | Pilih model ID yang tepat | Registry mengarah ke provider yang dimaksud |
| OPENAI_API_BASE | Override endpoint transport OpenAI | Berlaku untuk cabang OpenAI |
| OPENAI_API_KEY | Autentikasi transport tersebut | Tersedia bagi proses client |
| api_models.json | Petakan model ID ke provider | Jalur saat ini adalah hedge_fund/llm/ |
Periksa konfigurasi tanpa membuat request
Contoh di bawah gagal sebelum pembuatan client jika registry lokal memilih transport yang berbeda. Tetapkan RESEARCH_MODEL_ID ke ID katalog yang registrasinya dalam aplikasi telah Anda tinjau. Jika tidak ada, sengaja tambahkan baris registry lokal menggunakan field display_name, model_name, dan provider yang sudah ada, sambil mempertahankan entri yang tidak terkait. Placeholder bukan klaim model yang didukung. Sediakan key melalui environment atau secret store. Preflight ini hanya memeriksa pemilihan; tidak menetapkan akses jaringan, entitlement akun, output terstruktur, atau kualitas riset.
import os
from hedge_fund.llm.registry import provider_for
model = os.environ["RESEARCH_MODEL_ID"]
if provider_for(model) != "OpenAI":
raise RuntimeError("MODEL_TRANSPORT_MISMATCH")
os.environ["HEDGE_FUND_LLM_MODEL"] = model
os.environ["OPENAI_API_BASE"] = "https://api.apisrouter.com/v1"
assert os.environ["OPENAI_API_KEY"]
# Selection check only; no make_llm() or model request.Lacak rute model yang diusulkan
Rute model dimulai setelah resolusi registry. Aplikasi tetap memerlukan client data keuangan, definisi universe, dan tanggal riset eksplisit. Key gateway bukan credential Financial Datasets atau hak untuk mendistribusikan kembali data pasar. Validasi pengenal perusahaan, mata uang, dan semantik timestamp secara independen. Untuk perusahaan yang tercatat lintas bursa, tentukan apakah analisis Anda membahas penerbit, kelas saham lokal, atau depositary receipt. Pisahkan bukti permintaan model dari bukti data provider agar seri keuangan yang hilang tidak salah didiagnosis sebagai masalah LLM.
Validasi keputusan yang di-parse sebagai data
Factory yang ditinjau membungkus client provider di balik metode complete(system, user). Teks response tidak otomatis menjadi hasil riset yang valid. Periksa lapisan agen yang mem-parse JSON, menangani abstention, dan menggabungkan output. Response dapat tidak kosong tetapi malformed, kontradiktif secara internal, atau tidak didukung input. Simpan response mentah yang telah disamarkan dan objek yang diparse dalam satu catatan request. Validasi field yang diharapkan dan status yang diizinkan, bukan mencocokkan kalimat yang menenangkan. Perlakukan hasil yang hilang atau ditolak sebagai unavailable, bukan sinyal netral yang diam-diam masuk ke agregasi portofolio.
import os
from hedge_fund.llm.client import make_llm, extract_json
from hedge_fund.llm.registry import provider_for
model = os.environ["HEDGE_FUND_LLM_MODEL"]
assert provider_for(model) == "OpenAI"
client = make_llm(model=model)
result = extract_json(client.complete(
"Return a JSON object with a boolean ready field.",
"Set ready to true.",
))
assert result.get("ready") is True
# This request tests the client and parser, not financial research.Buat siklus riset pertama kecil dan dapat ditinjau
Setelah uji client berotorisasi, pilih satu penerbit dan pertanyaan terbatas dengan bukti berlisensi atau publik. Pastikan setiap tool yang diperlukan mengembalikan perusahaan dan periode yang benar, lalu bandingkan penjelasan yang dibuat dengan dokumen asli. Pertahankan run awal read-only dan sertakan langkah tinjauan manusia eksplisit. Evaluasi apakah output mengutip bukti pendukung dan yang berlawanan, mencatat data hilang, serta membedakan asumsi dari perhitungan. Nama peran analis atau gaya investasi bukan bukti bahwa penalaran yang dibuat mereproduksi metode atau penilaian orang nyata.
Pertahankan bukti backtest secara independen
Aplikasi dapat menyelesaikan siklus riset sementara evaluasi historisnya tetap tidak valid. Periksa timestamp publikasi, data yang direvisi, pemilihan perusahaan yang masih bertahan, dan penggunaan berita saat ini dalam prompt historis. Pisahkan periode pengembangan, validasi, dan held-out sebelum mengiterasi prompt atau pengaturan strategi. Simpan benchmark, asumsi biaya transaksi, dan setiap konfigurasi yang dicoba. Memilih prompt berulang kali berdasarkan periode pengujian yang sama mengubah periode itu menjadi data pengembangan. Laporkan evaluasi yang tidak lengkap dengan jujur, jangan mengisi tabel hasil dengan return ilustratif yang bisa disalahartikan sebagai pengukuran.
Kendalikan kegagalan dan total pengeluaran riset
Hitung panggilan model, retry, kegagalan parsing, biaya data keuangan, dan komputasi lokal pada tingkat job. Timeout endpoint dapat membuat billing tidak diketahui sampai penggunaan direkonsiliasi. Ulangi kegagalan transport sementara dalam anggaran tetap; jangan mengulang kegagalan autentikasi atau pemilihan provider tanpa perubahan. Pertahankan tahap gagal dan error tersanitasi untuk ditinjau. Respons hello gateway umum dapat membantu mengisolasi transport, tetapi hanya pengujian client proyek sendiri yang menguji perilaku adapter. Perbandingan biaya yang berguna mempertahankan paket sumber, peran, dan kriteria penerimaan output tetap sama pada kandidat model.
Bukti dan keterbatasan
Factory dan registry saat ini ditinjau pada fc1bf250 tanggal 5 September 2026. Contoh-contoh ini adalah template berbasis sumber; tidak ada request APIsRouter atau siklus riset lengkap yang dijalankan untuk panduan ini. Panggilan sebelumnya melalui gateway lain tidak membuktikan integrasi ini. Pisahkan hasil client, data-tool, dan artefak lengkap saat memvalidasi lingkungan Anda.
Pertanyaan umum
Mengapa custom ID saya meminta key Anthropic?
Dalam factory yang ditinjau, model ID yang tidak terdaftar fallback ke Anthropic. Periksa provider_for(model) dan registry hedge_fund/llm/api_models.json saat ini sebelum pembuatan client.
Apakah OPENAI_API_BASE merutekan ulang setiap provider?
Tidak. Nilai itu dibaca di cabang client OpenAI. Provider registry lain membuat client sendiri dan mungkin menggunakan pengaturan berbeda.
Field registry mana yang relevan?
Registry yang ditinjau membaca display_name, model_name, dan provider. Pertahankan endpoint ID persis dan pilih transport secara sengaja.
Apakah model di menu aplikasi berarti endpoint dapat diakses?
Tidak. Periksa ID persis dan akses akun pada endpoint pilihan. Registry aplikasi menentukan pemilihan client, bukan katalog gateway.
Apa yang harus diperiksa setelah client mengembalikan JSON?
Validasi tool data keuangan, schema output agen, perilaku abstention, dan artefak riset final berpaut-bukti menggunakan tugas terbatas.
Bisakah saya menggunakan output untuk menempatkan order otomatis?
Panduan ini mencakup konfigurasi riset. Otorisasi order, batas, rekonsiliasi, dan peninjauan operasional adalah bagian dari sistem eksekusi yang divalidasi terpisah.