Chạy TradingAgents trên một backend tương thích OpenAI tùy chỉnh.
Updated 2026-07-30
TradingAgents đi kèm một chế độ provider openai_compatible. Đặt backend_url thành https://api.apisrouter.com/v1, export một key, và cả agent deep-think lẫn quick-think định tuyến qua một endpoint duy nhất với mọi model catalog gọi được theo id.
Câu trả lời nhanh: ba cài đặt định tuyến TradingAgents đi bất cứ đâu.
TradingAgents hỗ trợ các endpoint tùy chỉnh gốc. Đặt llm_provider thành "openai_compatible", đặt backend_url thành địa chỉ endpoint của bạn, và export OPENAI_COMPATIBLE_API_KEY với một key cho endpoint đó. Với APIsRouter, backend URL là https://api.apisrouter.com/v1, và mọi model trong catalog trở thành gọi được từ các slot deep_think_llm và quick_think_llm bằng đúng id model của nó. Đây là một đường cấu hình đã tài liệu hóa trong repo upstream, không phải một bản fork hay một patch. Cùng các giá trị đó cũng có thể được cung cấp dưới dạng biến môi trường (TRADINGAGENTS_LLM_PROVIDER, TRADINGAGENTS_LLM_BACKEND_URL, TRADINGAGENTS_DEEP_THINK_LLM, TRADINGAGENTS_QUICK_THINK_LLM), nên một job theo lịch hoặc CI runner có thể chuyển backend mà không chạm vào code Python.
config["llm_provider"] = "openai_compatible"
config["backend_url"] = "https://api.apisrouter.com/v1"
# auth: export OPENAI_COMPATIBLE_API_KEY=sk-...Cách TradingAgents nói chuyện với backend LLM của nó.
TradingAgents (TauricResearch trên GitHub, hơn 93K star) là một framework giao dịch đa agent. Một lần chạy phân tích tỏa ra qua một đội nhà phân tích bao phủ cơ bản, tâm lý thị trường, tin tức, và kỹ thuật, rồi một nhà nghiên cứu bull và một nhà nghiên cứu bear tranh luận vụ việc qua một hoặc nhiều vòng, một agent trader đề xuất vị thế, và một lớp quản lý rủi ro xem xét nó trước quyết định cuối cùng. Framework chia công việc đó qua hai slot model. deep_think_llm xử lý các bước nặng lý luận: cuộc tranh luận nghiên cứu, quyết định trader, và xem xét rủi ro. quick_think_llm xử lý các bước khối lượng lớn: đọc dữ liệu, tóm tắt tin tức, và soạn báo cáo nhà phân tích. Cả hai slot đều phát ra request /v1/chat/completions chuẩn. Cài đặt provider chỉ quyết định client và host nào các request đó đi tới, và openai_compatible gửi chúng tới bất cứ backend_url nào bạn cấu hình. Ở dạng gốc, TradingAgents cũng hỗ trợ OpenAI, Anthropic, Google, và DeepSeek như các provider hạng nhất, nhưng mỗi cái cần tài khoản riêng, key riêng, và một provider mỗi lần chạy. Chế độ openai_compatible gộp điều đó lại: TradingAgents chuyển tiếp trường model dưới dạng một chuỗi trơn, nên khi endpoint sau backend_url phục vụ nhiều vendor, một slot deep-think Claude và một slot quick-think GPT hoặc DeepSeek có thể chạy trong cùng một phân tích. Việc trộn theo từng vai trò đó là lý do thực tế để định tuyến framework qua một gateway thay vì một endpoint đơn vendor.
Cài đặt đầy đủ: cấu hình Python hoặc biến môi trường.
Đường lập trình sao chép DEFAULT_CONFIG và ghi đè bốn khóa. Key xác thực đối chiếu với endpoint tùy chỉnh được đọc từ OPENAI_COMPATIBLE_API_KEY, nên nó không bao giờ cần xuất hiện trong dict cấu hình hay file nguồn. Đường biến môi trường đặt cùng các giá trị qua ánh xạ _ENV_OVERRIDES trong default_config.py và hoạt động cho cả Python API lẫn CLI tương tác (tradingagents, hoặc python -m cli.main). Lưu ý backend_url mặc định là None, trong trường hợp đó client của mỗi provider rơi về endpoint mặc định riêng của nó; việc ghi đè chỉ có hiệu lực khi bạn đặt nó tường minh. Dữ liệu thị trường là một mối quan tâm riêng biệt. TradingAgents lấy báo giá và dữ liệu cơ bản qua các vendor dữ liệu của nó (ví dụ ALPHA_VANTAGE_API_KEY), và các credential đó không liên quan tới endpoint LLM. Đổi backend_url không chạm vào pipeline dữ liệu.
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai_compatible"
config["backend_url"] = "https://api.apisrouter.com/v1"
config["deep_think_llm"] = "claude-opus-4-7" # debate rounds + trade decision
config["quick_think_llm"] = "claude-sonnet-4-6" # analysts, summaries
config["max_debate_rounds"] = 2
ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-07-15")
print(decision)Chọn model deep-think và quick-think.
Mặc định upstream ghép một model frontier trong slot deep với một model mini trong slot quick, đây là hình dạng đúng: chi năng lực lý luận nơi quyết định được đưa ra, và năng lực khối lượng nơi việc đọc được thực hiện. Định tuyến qua một endpoint biến việc ghép đó thành một thay đổi hai dòng giữa các lần chạy, nên quy trình thực tế là giữ cố định slot deep và A/B slot quick đối chiếu với các số liệu backtest của bạn thay vì đoán mò.
- deep_think_llm mang cuộc tranh luận bull/bear, quyết định trader, và xem xét rủi ro. Ít lệnh gọi mỗi lần chạy, nhưng mỗi lệnh lý luận trên toàn bộ context nhà phân tích, và max_debate_rounds nhân chúng lên. Đây là nơi một model lý luận hàng đầu (claude-opus-4-7, gpt-5.5) xứng đáng với token của nó.
- quick_think_llm khai hỏa ở mọi bước nhà phân tích: đọc dữ liệu cơ bản, chấm điểm tâm lý thị trường, tóm tắt tin tức, soạn báo cáo. Phần lớn khối lượng request của một lần chạy rơi vào đây, nên một model tầng trung nhanh (claude-sonnet-4-6, deepseek-v4-pro) giữ các lần chạy nhanh mà không làm suy giảm đầu vào tranh luận.
- Các tải long-context, như nạp toàn bộ hồ sơ hoặc các cửa sổ tin tức lớn vào các nhà phân tích, là nơi gemini-3.1-pro-preview đáng thử trong slot quick.
- Backtest khuếch đại mọi thứ. Một lượt quét qua 50 ticker và 20 ngày là 1.000 lệnh gọi propagate(), nên một lựa chọn model quick-think trông không đáng kể trên một lần chạy sẽ chi phối hóa đơn token ở quy mô lượt quét.
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ình | Giá chính thức | Giá 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 |
| Gemini 3.1 Pro Preview | $2.00 / $12.00 per M | $1.60 / $9.60 per M |
| DeepSeek V4 Pro | $0.43 / $0.87 per M | $0.40 / $0.90 per M |
Backtest ở quy mô lượt quét: key, ghim, và giới hạn.
Một khi thiết lập lần-chạy-đơn hoạt động, bề mặt lỗi chuyển sang lượt quét. Ba thói quen giữ một backtest nhiều ngày tái tạo được và debug được. Ghim id model chính xác. Tên model trần trên một số vendor là các con trỏ đang trôi âm thầm chuyển sang các bản chụp mới hơn, nghĩa là một backtest bắt đầu thứ Hai và kết thúc thứ Sáu có thể không chạy trên cùng một model. Nơi catalog liệt kê một biến thể có ngày, hãy đặt id có ngày vào cấu hình, và ghi lại dict cấu hình cạnh kết quả như bạn ghi một random seed. Dùng một key mỗi thử nghiệm. Key miễn phí để tạo, và giới hạn phạm vi một key cho một lượt quét biến log sử dụng thành sổ cái chi phí của thử nghiệm: số lượng token và chi tiêu theo từng model, lọc được đúng vào các lần chạy trong lượt quét đó. Khi hai thử nghiệm chia sẻ một key, việc quy chi tiêu sau đó nghĩa là grep timestamp. Biết trần đồng thời của bạn trước khi song song hóa. propagate() là đồng bộ theo từng ticker-ngày, nên các lượt quét thường được chia mảnh qua các tiến trình. Mỗi mảnh nhân tốc độ request trên slot quick-think trước tiên, và một lỗi 429 giữa tranh luận tốn cả một lần chạy, không phải một request. Tăng dần số mảnh trong khi theo dõi console thay vì khởi chạy năm mươi worker cùng lúc; các kênh upstream pooled nâng trần nhưng không khiến nó vô hạn.
Ai định tuyến TradingAgents qua một gateway.
- Người chạy backtest thực hiện các lượt quét ticker-theo-ngày. Hàng trăm lệnh gọi propagate() mỗi thử nghiệm khiến khả năng quan sát sử dụng theo từng key và một bề mặt billing duy nhất hữu ích hơn bốn dashboard vendor.
- Nhà nghiên cứu so sánh cặp model. Hoán đổi deep_think_llm giữa các id Claude, GPT, và DeepSeek là một chỉnh sửa cấu hình đối chiếu với một endpoint, không phải một tài khoản vendor mới cho mỗi ứng viên.
- Đội trộn vendor theo từng vai trò. Claude cho tranh luận, DeepSeek cho khối lượng nhà phân tích. Chế độ provider gốc khóa một lần chạy vào một vendor; một endpoint đa vendor thì không.
- 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.
- Các lần chạy theo lịch và CI. Thiết lập chỉ-qua-môi-trường nghĩa là image runner cần một secret (OPENAI_COMPATIBLE_API_KEY) thay vì một secret cho mỗi provider.
Xác minh endpoint và debug lần chạy đầu tiên.
Trước khi chạy một phân tích đầy đủ, xác nhận endpoint trả lời với các model bạn định dùng. Một lệnh curl một dòng đối chiếu /v1/models với key của bạn liệt kê mọi id gọi được; các chuỗi trong deep_think_llm và quick_think_llm phải khớp chính xác các id đó. Các kiểu lỗi trên lần chạy đầu nhất quán. Một lỗi 401 gần như luôn nghĩa là OPENAI_COMPATIBLE_API_KEY được export trong một shell khác với shell đang chạy tradingagents, hoặc không được export chút nào; các biến môi trường đặt trong .bashrc không tới được một unit systemd hoặc một cron job trừ khi chính file unit export chúng. Một lỗi model-not-found nghĩa là chuỗi id không khớp catalog: id là chính xác, kể cả hậu tố phiên bản, và đầu ra /v1/models ở trên là nguồn sự thật. Một lỗi kết nối với backend_url đã đặt thường nghĩa là URL thiếu hậu tố /v1, vì client nối thêm các đường dẫn route như /chat/completions vào bất cứ base nào bạn đưa. Nếu lần chạy hoạt động nhưng có vẻ đình trệ ở giai đoạn tranh luận, đó là độ trễ bình thường cho các model lý luận trên context dài chứ không phải vấn đề endpoint; giữ debug=True để theo dõi các bước agent stream. Timeout thực sự trên các lượt deep-think rất dài là một cài đặt phía client, và đáng nâng lên trước khi kết luận backend đã bỏ request. Khi request chảy qua, console APIsRouter hiển thị model theo từng request, số lượng token, và chi tiêu, với một framework nhiều lệnh gọi thế này đây là cách nhanh nhất để thấy chính xác token của một lần chạy đi đâu.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_COMPATIBLE_API_KEY" | head -50Câu hỏi thường gặp
TradingAgents có hỗ trợ model Claude và Gemini qua một endpoint openai_compatible không?
Có. Ở chế độ openai_compatible, framework gửi trường model dưới dạng một chuỗi trơn tới backend_url qua /v1/chat/completions. Bất kỳ id nào endpoint phục vụ đều hoạt động, gồm cả id Claude, Gemini, và DeepSeek, ở cả slot deep-think lẫn quick-think.
TradingAgents dùng API key nào với một backend_url tùy chỉnh?
OPENAI_COMPATIBLE_API_KEY. Provider openai_compatible đọc nó từ môi trường, nên key không bao giờ xuất hiện trong dict cấu hình hay file nguồn của bạn. OPENAI_API_KEY chỉ được provider openai gốc dùng.
deep_think_llm và quick_think_llm có thể đến từ các vendor khác nhau trong cùng một lần chạy không?
Qua một endpoint đa vendor, có: cả hai slot đều gửi tới cùng backend_url và chuỗi model quyết định vendor theo từng request. Với các provider gốc (openai, anthropic, google, deepseek), một lần chạy bị khóa vào một vendor cho cả hai slot.
Tôi có còn cần tài khoản OpenAI sau khi đặt backend_url không?
Không. Với llm_provider đặt thành openai_compatible, không request nào đi tới host OpenAI và OPENAI_API_KEY không được đọc. Bạn vẫn cần các credential dữ liệu thị trường TradingAgents dùng (ví dụ ALPHA_VANTAGE_API_KEY), thứ độc lập với endpoint LLM.
CLI tương tác có tôn trọng endpoint tùy chỉnh không?
Có. CLI (tradingagents, hoặc python -m cli.main) giải quyết cùng cấu hình, và các biến môi trường TRADINGAGENTS_LLM_PROVIDER / TRADINGAGENTS_LLM_BACKEND_URL ghi đè nó trước prompt provider, nên các lần chạy CLI theo lịch hoặc container hóa không cần input tương tác cho việc định tuyến.
Một phân tích TradingAgents tiêu tốn bao nhiêu token?
Nó thay đổi theo max_debate_rounds, số nhà phân tích, và lượng context thị trường họ hấp thụ; một phân tích ticker-ngày đơn thường rơi vào hàng trăm nghìn token, phần lớn ở slot quick-think. Góc nhìn sử dụng theo từng key trong console APIsRouter hiển thị chính xác sự phân chia mỗi lần chạy, đáng tin cậy hơn ước lượng.