Configurazione API personalizzata di ai-hedge-fund
Updated 2026-09-05
La selezione del provider viene prima della configurazione dell'endpoint. Segui la factory del modello e il registro correnti, poi valida dati, output dell'agente e valutazione come fasi separate.
Identifica il percorso applicativo corrente
Per l'applicazione ai-hedge-fund corrente, conferma il provider del registro del modello prima di impostare OPENAI_API_BASE. Alla revisione fc1bf250, la factory del client si trova in hedge_fund/llm/client.py e legge un registro accanto a sé. I tutorial più vecchi che fanno riferimento solo a src/llm/models.py descrivono un percorso applicativo diverso. Fissa il checkout e usa l'entrypoint che importa la factory corrente. Inizia con il preflight del provider qui sotto, poi esercita il client del progetto prima di raccogliere dati finanziari per un ciclo di ricerca completo.
Risolvi il provider prima di impostare il base URL
make_llm seleziona un provider dall'identificativo del modello scelto. Il ramo OpenAI passa OPENAI_API_BASE a ChatOpenAI e legge la chiave API corrispondente. Un identificativo sconosciuto ricade sul trasporto Anthropic nella fonte revisionata, quindi esportare semplicemente un base URL OpenAI non basta. Conferma prima che l'ID esatto del modello endpoint sia registrato sotto OpenAI. Qui OpenAI identifica l'adapter di trasporto; non certifica il vendor del modello sottostante. Non cambiare una voce del registro globale finché non hai compreso ogni flusso che la usa.
| Impostazione | Scopo | Controllo |
|---|---|---|
| HEDGE_FUND_LLM_MODEL | Seleziona l'ID modello esatto | Il registro risolve il provider previsto |
| OPENAI_API_BASE | Sostituisci l'endpoint del trasporto OpenAI | Si applica al ramo OpenAI |
| OPENAI_API_KEY | Autentica quel trasporto | Disponibile al processo client |
| api_models.json | Mappa gli ID modello ai provider | Il percorso corrente è hedge_fund/llm/ |
Ispeziona una configurazione senza effettuare richieste
L'esempio seguente fallisce prima della costruzione del client se il registro locale seleziona un trasporto diverso. Imposta RESEARCH_MODEL_ID su un ID del catalogo di cui hai revisionato la registrazione applicativa. Se assente, aggiungi deliberatamente una riga di registro locale usando i campi esistenti display_name, model_name e provider, preservando le voci non correlate. Il placeholder non è una dichiarazione di modello supportato. Fornisci la chiave tramite ambiente o secret store. Questo preflight controlla solo la selezione; non può stabilire accesso di rete, diritto dell'account, output strutturato o qualità della ricerca.
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.Traccia il percorso del modello proposto
Il percorso del modello inizia dopo la risoluzione del registro. L'applicazione richiede ancora un client per dati finanziari, una definizione dell'universo e una data di ricerca esplicita. Una chiave gateway non è una credenziale Financial Datasets né un diritto a ridistribuire dati di mercato. Valida separatamente identificativi aziendali, valuta e semantica dei timestamp. Per aziende quotate su più mercati, specifica se l'analisi riguarda l'emittente, una classe azionaria locale o una ricevuta di deposito. Mantieni separate le evidenze delle richieste al modello dalle evidenze dei dati provider, così una serie finanziaria mancante non viene diagnosticata erroneamente come problema LLM.
Valida le decisioni analizzate come dati
La factory revisionata avvolge i client provider dietro un metodo complete(system, user). Il suo testo di risposta non è automaticamente un risultato di ricerca valido. Ispeziona il livello agente che analizza JSON, gestisce l'astensione e combina gli output. Una risposta può essere non vuota ma malformata, internamente contraddittoria o non supportata dagli input. Conserva la risposta grezza redatta e l'oggetto analizzato nello stesso record di richiesta. Valida campi attesi e stati consentiti invece di cercare una frase rassicurante. Tratta un risultato mancante o rifiutato come non disponibile, non come un segnale neutro che entra silenziosamente nell'aggregazione del portafoglio.
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.Mantieni piccolo e revisionabile il primo ciclo di ricerca
Dopo un test client autorizzato, scegli un emittente e una domanda circoscritta con evidenze con licenza o pubbliche. Conferma che ogni strumento richiesto abbia restituito azienda e periodo previsti, poi confronta la spiegazione generata con i documenti originali. Mantieni la prima esecuzione in sola lettura e conserva un passaggio esplicito di revisione umana. Valuta se l'output cita evidenze a favore e contrarie, registra dati mancanti e distingue ipotesi da calcoli. Il nome di un ruolo analista o di uno stile d'investimento non dimostra che il ragionamento generato riproduca metodi o giudizio di una persona reale.
Mantieni indipendente l'evidenza del backtest
Un'applicazione può terminare un ciclo di ricerca mentre la sua valutazione storica resta invalida. Esamina timestamp di pubblicazione, dati revisionati, selezione delle aziende sopravvissute e qualsiasi uso di notizie correnti nei prompt storici. Separa periodi di sviluppo, validazione e holdout prima di iterare su prompt o impostazioni della strategia. Salva benchmark, ipotesi sui costi di transazione e ogni configurazione tentata. Scegliere ripetutamente un prompt in base allo stesso periodo di test trasforma quel periodo in dati di sviluppo. Riporta onestamente la valutazione incompleta invece di riempire una tabella risultati con un rendimento illustrativo che potrebbe essere scambiato per una misurazione.
Controlla i fallimenti e la spesa totale di ricerca
Conta chiamate al modello, retry, fallimenti di parsing, costi dei dati finanziari e calcolo locale a livello di job. Un timeout dell'endpoint può lasciare sconosciuta la fatturazione fino alla riconciliazione dell'utilizzo. Ripeti i fallimenti transitori di trasporto entro un budget fisso; non ripetere senza modifiche i fallimenti di autenticazione o selezione del provider. Mantieni disponibili per la revisione la fase fallita e l'errore sanitizzato. Una risposta hello generica del gateway può aiutare a isolare il trasporto, ma solo i test del client del progetto verificano il comportamento dell'adapter. Un confronto dei costi utile mantiene costanti pacchetto fonte, ruoli e criteri di accettazione dell'output tra i candidati modello.
Evidenze e limiti
Factory e registro correnti sono stati revisionati a fc1bf250 il 5 settembre 2026. Gli esempi sono template basati sulla fonte; per questa guida non sono state eseguite richieste APIsRouter o cicli di ricerca completi. Chiamate precedenti attraverso altri gateway non stabiliscono questa integrazione. Mantieni separati risultati del client, degli strumenti dati e dell'artefatto completo quando valuti il tuo ambiente.
Domande frequenti
Perché il mio ID personalizzato chiede una chiave Anthropic?
Nella factory revisionata, un ID modello non registrato ricade su Anthropic. Controlla provider_for(model) e il registro corrente hedge_fund/llm/api_models.json prima della costruzione del client.
OPENAI_API_BASE reindirizza ogni provider?
No. Viene letto nel ramo client OpenAI. Gli altri provider del registro costruiscono client propri e possono usare impostazioni diverse.
Quali campi del registro sono rilevanti?
Il registro revisionato legge display_name, model_name e provider. Conserva l'ID endpoint esatto e seleziona intenzionalmente il trasporto.
Un modello nel menu dell'app implica accesso all'endpoint?
No. Controlla ID esatto e accesso dell'account con l'endpoint scelto. Il registro applicativo determina la selezione del client, non il catalogo del gateway.
Cosa devo controllare dopo che il client restituisce JSON?
Valida strumenti dati finanziari, schema dell'output agente, comportamento di astensione e artefatto di ricerca finale collegato alle evidenze usando un compito circoscritto.
Posso usare l'output per inserire automaticamente un ordine?
Questa guida copre la configurazione della ricerca. Autorizzazione dell'ordine, limiti, riconciliazione e revisione operativa appartengono a un sistema di esecuzione validato separatamente.