Chạy ai-hedge-fund trên một base URL tương thích OpenAI tùy chỉnh.

Updated 2026-07-30

ai-hedge-fund xây các model OpenAI của nó bằng ChatOpenAI của LangChain và đọc base URL từ OPENAI_API_BASE. Đặt nó thành https://api.apisrouter.com/v1, export một key, và mọi agent phân tích trong quỹ định tuyến qua một endpoint duy nhất.

Câu trả lời nhanh: OPENAI_API_BASE cộng một key.

Provider OpenAI của ai-hedge-fund được khởi tạo dưới dạng ChatOpenAI(model=model_name, api_key=api_key, base_url=base_url), và base_url đó đến từ os.getenv("OPENAI_API_BASE") trong src/llm/models.py. Vậy nên việc ghi đè là hai dòng trong .env: trỏ OPENAI_API_BASE vào https://api.apisrouter.com/v1 và đặt OPENAI_API_KEY thành key gateway của bạn. Mọi model chạy qua provider OpenAI giờ gửi request tới gateway. Chú ý kỹ tên biến: nó là OPENAI_API_BASE, quy ước thời LangChain, không phải OPENAI_BASE_URL. Export nhầm biến sẽ bị bỏ qua âm thầm và request tiếp tục đi tới api.openai.com, đây là cách phổ biến nhất khiến cài đặt này trông như không hoạt động.

OPENAI_API_BASE=https://api.apisrouter.com/v1
OPENAI_API_KEY=sk-APIsRouter-...
FINANCIAL_DATASETS_API_KEY=...   # market data, unrelated to the LLM endpoint

Cách ai-hedge-fund chọn một model và một provider.

ai-hedge-fund (virattt trên GitHub, khoảng 62K star) mô phỏng một quỹ như một hội đồng gồm nhiều agent: các persona nhà phân tích mô phỏng theo các nhà đầu tư nổi tiếng, cộng thêm agent định giá, tâm lý thị trường, cơ bản, và kỹ thuật, nuôi cho một risk manager và một portfolio manager tổng hợp ra tín hiệu cuối cùng. Tất cả cùng chia sẻ một lựa chọn model cho mỗi lần chạy, nên một lần chạy nhân quyết định model của bạn lên qua mọi agent và mọi ticker. Việc chọn model có hai đường. Ở chế độ tương tác, chạy poetry run python src/main.py --ticker AAPL,MSFT,NVDA không kèm flag model sẽ mở một bộ chọn dạng questionary. Ở chế độ script, flag --model nhận một tên model, nhưng chỉ những tên tồn tại trong registry model của repo: find_model_by_name() tra chuỗi đó trong src/llm/api_models.json, và mỗi entry registry mang display_name, model_name, và provider. Nếu tra cứu thất bại, CLI không đoán provider; nó quay về bộ chọn tương tác, điều này quan trọng với tự động hóa vì một id không xác định biến một lần chạy theo script thành một lần chạy ngồi chờ nhập bàn phím. Trường provider là thứ quyết định định tuyến. Entry đánh dấu OpenAI đi qua ChatOpenAI và tôn trọng OPENAI_API_BASE; entry đánh dấu Anthropic đi qua ChatAnthropic và ANTHROPIC_API_KEY, bỏ qua base URL của bạn hoàn toàn. Đó là hiểu biết mấu chốt cho việc định tuyến qua gateway: cột provider chọn client và do đó chọn endpoint, độc lập với vendor nào thực sự tạo ra model.

Cài đặt đầy đủ: .env cộng một entry registry cho mỗi model gateway.

Với các model registry đã liệt kê sẵn dưới provider OpenAI, chỉ riêng việc ghi đè .env đã đủ; chuỗi model được chuyển thẳng tới endpoint nguyên trạng. Để chạy một id Claude, DeepSeek, hoặc Qwen qua gateway trên cùng key, thêm một entry vào src/llm/api_models.json với id catalog làm model_name và, quan trọng nhất, "OpenAI" làm provider. Provider chọn client, nên một entry đánh dấu OpenAI đi qua ChatOpenAI và OPENAI_API_BASE của bạn dù bản thân model không phải model OpenAI. Entry đó sau đó xuất hiện trong bộ chọn tương tác và giải quyết được qua --model trong script. Đây là một chỉnh sửa JSON ba dòng trong bản clone của bạn, không phải thay đổi code, và đó là hình dạng đã được tài liệu hóa mà registry vốn đã dùng. Giữ trong đầu các entry gốc-theo-provider để đối chiếu: chọn một model registry đánh dấu Anthropic sẽ tìm ANTHROPIC_API_KEY và đi thẳng tới endpoint của Anthropic. Nếu ý định của bạn là một key gateway cho mọi thứ, chạy model của bạn qua các entry đánh dấu OpenAI và bạn có thể để trống hoàn toàn các key theo từng vendor.

{
  "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"
}

Chọn model cho một hội đồng agent.

Vì registry khiến mọi ứng viên có thể gọi được sau một flag, đánh giá trung thực nhất là thực nghiệm: chạy cùng ticker và ngày qua hai hoặc ba model rồi so sánh tín hiệu và chi tiêu. Góc nhìn sử dụng theo từng key định giá mỗi đợt quét cho bạn, biến lựa chọn model từ một cuộc tranh luận thành một phép đo.

  • Một lần chạy là nhiều phán quyết. Mỗi persona nhà phân tích lý luận trên cùng hồ sơ và dữ liệu giá cho mỗi ticker, nên lựa chọn model được nhân lên theo số agent nhân số ticker. Một id lý luận hàng đầu (claude-opus-4-7, gpt-5.5) nâng chất lượng mọi phán quyết với hóa đơn token tương ứng cũng nhân lên.
  • claude-sonnet-4-6 là lựa chọn mặc định hợp lý: đủ mạnh để lý luận persona giữ mạch lạc trên context cơ bản dài, giá phù hợp cho các lần chạy tỏa ra hàng chục agent và một rổ ticker.
  • deepseek-v4-pro và qwen3.7-max đáng để benchmark cho các đợt quét rộng, nơi khoảng cách giá mỗi lần chạy cộng dồn qua mọi ngày backtest.
  • Dù chọn gì, hãy ghim chặt nó. Tín hiệu từ các bản chụp khác nhau của một model đang thay đổi không so sánh được qua một cửa sổ backtest; dùng id chính xác và ghi lại chuỗi model bên cạnh kết quả như một random seed.

Trả theo mức sử dụng · thấp hơn giá chính thức

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

Mô hìnhGiá chính thứcGiá của chúng tôi
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

Các kiểu lỗi đặc thù của ai-hedge-fund.

Sai biến môi trường. Repo này đọc OPENAI_API_BASE. OPENAI_BASE_URL, biến các công cụ khác dùng, không được tra cứu, và đặt nó chẳng làm gì ngoài khiến bạn tin rằng việc ghi đè đã hỏng. Nếu request vẫn đi tới api.openai.com, kiểm tra tên biến trước tiên. --model với một id chưa đăng ký. find_model_by_name() chỉ biết các entry trong api_models.json. Truyền một id catalog chưa đăng ký và CLI in ra thông báo not-found rồi rơi vào bộ chọn tương tác, trong một cron job hoặc lần chạy CI nghĩa là một lần treo âm thầm, không phải một lỗi thoát. Đăng ký id trước; rồi các lần chạy theo script sẽ giải quyết nó một cách xác định. Các entry đánh dấu provider bỏ qua gateway. Chọn một model registry có provider là Anthropic, Google, hoặc DeepSeek định tuyến qua client và key gốc của vendor đó. Nếu bạn mong đợi lần chạy xuất hiện trong log sử dụng gateway của mình mà nó không có, cột provider của model bạn chọn chính là lời giải thích. Lỗi dữ liệu giả dạng lỗi LLM. Dữ liệu giá và cơ bản đến từ API dữ liệu tài chính được cấu hình bởi FINANCIAL_DATASETS_API_KEY, một dịch vụ hoàn toàn tách biệt. Một key dữ liệu thiếu hoặc hết hạn làm lần chạy thất bại trước hoặc giữa các lệnh gọi LLM, và traceback có thể đọc như một vấn đề model. Hai credential này thất bại độc lập; debug chúng độc lập. Prompt tương tác trong tự động hóa. Ngay cả khi mọi thứ đã cấu hình xong, quên flag --model sẽ mở bộ chọn. Với các lần chạy không giám sát, luôn truyền --model với một id đã đăng ký.

Ai định tuyến ai-hedge-fund qua một gateway.

  • Người chạy backtest quét ticker và khoảng ngày, nơi một hội đồng agent cho mỗi ticker mỗi ngày khiến chi tiêu token là chi phí chi phối và log sử dụng theo từng key là sổ cái tự nhiên.
  • Nhà nghiên cứu so sánh phán quyết model. Cùng một lần chạy dưới hai id model là một thay đổi flag, và sự bất đồng tín hiệu giữa các model tự nó là dữ liệu thú vị.
  • Người xây dựng mở rộng repo với agent mới muốn một endpoint và một key bên dưới dù thêm bao nhiêu persona.
  • Lập trình viên muốn lý luận Claude hoặc DeepSeek bên trong một repo mà đường định tuyến sạch nhất có hình dạng OpenAI, mà không cần duy trì một key vendor cho mỗi entry provider.
  • Lập trình viên không có quyền truy cập billing của một vendor cụ thể. Truy cập dựa trên nạp tiền không yêu cầu thẻ loại bỏ phụ thuộc đăng ký theo từng provider.

Xác minh endpoint và debug lần chạy đầu tiên.

Xác nhận gateway phục vụ các id bạn đã đăng ký trước khi khởi chạy; chuỗi model_name trong registry phải khớp chính xác với id đã phục vụ. Bậc thang lỗi lần chạy đầu: một lỗi 401 nghĩa là OPENAI_API_KEY không phải key gateway trong môi trường mà poetry thực sự khởi chạy cùng. Một lỗi model-not-found từ gateway nghĩa là model_name của entry registry gõ sai chính tả so với /v1/models. Một lần chạy dừng lại để hỏi input nghĩa là chuỗi --model không khớp registry. Một lỗi key-vendor (Anthropic, Google) nghĩa là provider của entry đã chọn không phải OpenAI. Và một traceback dạng dữ liệu trước bất kỳ đầu ra model nào trỏ tới FINANCIAL_DATASETS_API_KEY, không phải đường LLM. Khi một lần chạy hoàn tất, console APIsRouter hiển thị model theo từng request, số lượng token, và chi tiêu. Một lần chạy hội đồng là hàng chục lệnh gọi qua các giai đoạn nhà phân tích, rủi ro, và danh mục, và góc nhìn sử dụng là cách bạn thấy một quyết định thực sự tốn bao nhiêu trước khi mở rộng nó thành một đợt quét.

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

Câu hỏi thường gặp

Biến môi trường nào đặt base URL tùy chỉnh cho ai-hedge-fund?

OPENAI_API_BASE. Provider OpenAI trong src/llm/models.py xây ChatOpenAI với base_url=os.getenv("OPENAI_API_BASE"). OPENAI_BASE_URL không được repo này đọc, nên dùng đúng chính tả API_BASE.

ai-hedge-fund có thể chạy model Claude hoặc DeepSeek qua một key không?

Có, bằng cách đăng ký id trong src/llm/api_models.json với provider đặt là "OpenAI". Provider chọn client, nên một entry đánh dấu OpenAI đi qua ChatOpenAI và OPENAI_API_BASE của bạn, và id catalog được chuyển thẳng tới gateway dưới dạng một chuỗi trơn.

Vì sao --model đưa tôi vào một bộ chọn tương tác?

Giá trị --model được tra bằng find_model_by_name() đối chiếu với api_models.json. Id không xác định không bị đoán mò; CLI in thông báo not-found và mở bộ chọn. Thêm một entry registry cho id đó và các lần chạy theo script sẽ giải quyết nó mà không hỏi.

Tôi có còn cần ANTHROPIC_API_KEY hoặc key vendor khác không?

Không cần cho các model định tuyến qua gateway. Key vendor chỉ được các entry registry đánh dấu provider của vendor đó tra cứu. Nếu mọi model bạn chạy đều đăng ký dưới provider OpenAI, key gateway là credential LLM duy nhất lần chạy cần.

Thiết lập dữ liệu thị trường có đổi khi tôi đổi endpoint LLM không?

Không. Dữ liệu giá và cơ bản chạy qua API dữ liệu tài chính được cấu hình bởi FINANCIAL_DATASETS_API_KEY, độc lập với base URL LLM. Hai credential thất bại ở các giai đoạn khác nhau của một lần chạy, nên hãy debug chúng riêng biệt.

Một lần chạy ai-hedge-fund tốn bao nhiêu?

Nó tăng theo agent nhân ticker: mỗi persona nhà phân tích, cộng quản lý rủi ro và danh mục, lý luận trên mỗi ticker. Các lần chạy một rổ đơn thường rơi vào hàng chục đến hàng trăm nghìn token, và các đợt quét backtest nhân con số đó theo lưới ngày. Góc nhìn sử dụng theo từng key cho con số chính xác mỗi lần chạy.