Configuração de API personalizada do ai-hedge-fund
Updated 2026-09-05
A seleção do provedor vem antes da configuração do endpoint. Siga a fábrica e o registro de modelos atuais e valide dados, saída do agente e avaliação como etapas separadas.
Identifique o caminho atual da aplicação
Para a aplicação atual do ai-hedge-fund, confirme o provedor do registro do modelo antes de definir OPENAI_API_BASE. Na revisão fc1bf250, a fábrica do cliente fica em hedge_fund/llm/client.py e lê um registro ao lado dela. Tutoriais antigos que mencionam apenas src/llm/models.py descrevem outro caminho de aplicação. Fixe seu checkout e use o entrypoint que importa a fábrica atual. Comece pelo preflight do provedor abaixo e depois exercite o cliente do projeto antes de coletar dados financeiros para um ciclo completo de pesquisa.
Resolva o provedor antes de definir a base URL
make_llm seleciona um provedor a partir do identificador de modelo escolhido. Sua ramificação OpenAI passa OPENAI_API_BASE para ChatOpenAI e lê a chave de API correspondente. Um identificador desconhecido recua para o transporte Anthropic na fonte revisada, portanto apenas exportar uma base URL OpenAI é insuficiente. Confirme primeiro que o ID exato do modelo do endpoint está registrado em OpenAI. Aqui, OpenAI identifica o adaptador de transporte; não certifica o provedor do modelo subjacente. Não altere uma entrada de registro global sem entender todo fluxo que a utiliza.
| Configuração | Finalidade | Verificação |
|---|---|---|
| HEDGE_FUND_LLM_MODEL | Selecionar ID exato do modelo | O registro resolve para o provedor pretendido |
| OPENAI_API_BASE | Substituir endpoint de transporte OpenAI | Aplica-se à ramificação OpenAI |
| OPENAI_API_KEY | Autenticar esse transporte | Disponível para o processo do cliente |
| api_models.json | Mapear IDs de modelo para provedores | O caminho atual é hedge_fund/llm/ |
Inspecione uma configuração sem fazer uma solicitação
O exemplo abaixo falha antes da construção do cliente se o registro local selecionar outro transporte. Defina RESEARCH_MODEL_ID para um ID de catálogo cujo registro na aplicação você tenha revisado. Se estiver ausente, adicione deliberadamente uma linha de registro local usando os campos display_name, model_name e provider existentes, preservando entradas não relacionadas. O placeholder não é uma alegação de modelo suportado. Forneça a chave pelo ambiente ou por um armazenamento de segredos. Esse preflight verifica apenas a seleção; não estabelece acesso à rede, direito da conta, saída estruturada ou qualidade da pesquisa.
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.Rastreie a rota de modelo proposta
A rota do modelo começa depois da resolução do registro. A aplicação ainda precisa de um cliente de dados financeiros, uma definição do universo e uma data de pesquisa explícita. Uma chave de gateway não é uma credencial do Financial Datasets nem um direito de redistribuir dados de mercado. Valide identificadores de empresas, moeda e semântica dos timestamps de forma independente. Para empresas listadas em várias bolsas, especifique se sua análise trata do emissor, de uma classe de ação local ou de um recibo depositário. Mantenha evidências de solicitações do modelo separadas das evidências dos dados do provedor para que uma série financeira ausente não seja diagnosticada incorretamente como problema de LLM.
Valide decisões analisadas como dados
A fábrica revisada envolve clientes de provedores em um método complete(system, user). Seu texto de resposta não é automaticamente um resultado de pesquisa válido. Inspecione a camada do agente que analisa JSON, trata abstenção e combina saídas. Uma resposta pode não estar vazia e ainda ser malformada, contraditória internamente ou sem suporte nas entradas. Preserve a resposta bruta redigida e o objeto analisado em um único registro de solicitação. Valide campos esperados e estados permitidos, em vez de procurar uma frase tranquilizadora. Trate resultado ausente ou rejeitado como indisponível, não como sinal neutro que entra silenciosamente na agregação do portfólio.
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.Torne o primeiro ciclo de pesquisa pequeno e revisável
Depois de um teste de cliente autorizado, escolha um emissor e uma pergunta delimitada com evidências públicas ou licenciadas. Confirme que cada ferramenta necessária retornou a empresa e o período esperados e compare a explicação gerada com documentos originais. Mantenha a execução inicial somente leitura e preserve uma etapa explícita de revisão humana. Avalie se a saída cita evidências favoráveis e contrárias, registra dados ausentes e diferencia premissas de cálculos. O nome de um papel de analista ou estilo de investimento não é evidência de que o raciocínio gerado reproduza métodos ou julgamento de uma pessoa real.
Mantenha evidências de backtest independentes
Uma aplicação pode terminar um ciclo de pesquisa enquanto sua avaliação histórica continua inválida. Examine timestamps de publicação, dados revisados, seleção de empresas sobreviventes e qualquer uso de notícias atuais em prompts históricos. Separe períodos de desenvolvimento, validação e holdout antes de iterar em prompts ou configurações da estratégia. Salve o benchmark, as premissas de custos de transação e toda configuração tentada. Escolher repetidamente um prompt com base no mesmo período de teste transforma esse período em dados de desenvolvimento. Informe uma avaliação incompleta com honestidade, em vez de preencher uma tabela de resultados com um retorno ilustrativo que poderia ser confundido com medição.
Controle falhas e o gasto total de pesquisa
Conte chamadas de modelo, tentativas, falhas de parsing, cobranças de dados financeiros e computação local no nível da tarefa. Um timeout do endpoint pode deixar o faturamento desconhecido até que o uso seja reconciliado. Repita falhas transitórias de transporte dentro de um orçamento fixo; não repita falhas de autenticação ou seleção de provedor sem alterar a causa. Mantenha a etapa falha e seu erro sanitizado disponíveis para revisão. Uma resposta hello genérica do gateway pode ajudar a isolar o transporte, mas somente os testes do cliente do próprio projeto verificam o comportamento de seu adaptador. Uma comparação útil de custos mantém constante o pacote de fontes, os papéis e os critérios de aceitação da saída entre candidatos de modelo.
Evidências e limitações
A fábrica e o registro atuais foram revisados em fc1bf250 em 5 de setembro de 2026. Os exemplos são templates apoiados por fontes; nenhuma solicitação à APIsRouter nem ciclo completo de pesquisa foi executado para este guia. Chamadas anteriores por outros gateways não estabelecem esta integração. Mantenha separados os resultados do cliente, das ferramentas de dados e do artefato completo ao validar seu ambiente.
Perguntas frequentes
Por que meu ID personalizado pede uma chave Anthropic?
Na fábrica revisada, um ID de modelo não registrado recua para Anthropic. Confira provider_for(model) e o registro atual hedge_fund/llm/api_models.json antes de construir o cliente.
OPENAI_API_BASE redireciona todos os provedores?
Não. Ela é lida na ramificação do cliente OpenAI. Outros provedores do registro constroem seus próprios clientes e podem usar configurações diferentes.
Quais campos do registro são relevantes?
O registro revisado lê display_name, model_name e provider. Preserve o ID exato do endpoint e escolha o transporte intencionalmente.
Um modelo no menu da aplicação implica acesso ao endpoint?
Não. Verifique o ID exato e o acesso da conta com o endpoint escolhido. O registro da aplicação determina a seleção do cliente, não o catálogo do gateway.
O que verificar depois que o cliente retornar JSON?
Valide ferramentas de dados financeiros, esquema da saída do agente, comportamento de abstenção e artefato final de pesquisa ligado às evidências usando uma tarefa delimitada.
Posso usar a saída para colocar uma ordem automaticamente?
Este guia cobre configuração de pesquisa. Autorização de ordens, limites, reconciliação e revisão operacional pertencem a um sistema de execução validado separadamente.