Ejecuta los pipelines de agentes de FinGPT en un endpoint personalizado compatible con OpenAI.

Updated 2026-07-30

El pipeline de análisis multi-agente de FinGPT configura su LLM a través de un diccionario AG2 LLMConfig que toma api_type "openai" y un base_url. Configura base_url a https://api.apisrouter.com/v1, pasa una clave, y los agentes investigador, de sentimiento y asesor pueden correr en cualquier id de modelo del catálogo.

Respuesta rápida: base_url en el diccionario AG2 LLMConfig.

El pipeline de análisis financiero multi-agente de FinGPT (fingpt/ag2_financial_analysis_pipeline.ipynb en el repositorio upstream) construye su configuración de LLM como un diccionario AG2 LLMConfig con cuatro claves: model, api_key, api_type y base_url. El propio notebook upstream apunta base_url hacia un endpoint de router compatible con OpenAI en lugar de api.openai.com, así que enrutar a través de un gateway es el patrón documentado aquí, no un rodeo. Para ejecutar el pipeline a través de APIsRouter, configura api_type a "openai", configura base_url a https://api.apisrouter.com/v1, pon tu clave del gateway en api_key, y configura model a cualquier id del catálogo. Cada AssistantAgent en el notebook recibe el mismo objeto llm_config, así que un diccionario mueve a todo el equipo de agentes.

from autogen import LLMConfig  # ag2[openai]>=0.11.4

llm_config = LLMConfig({
    "model": "claude-sonnet-4-6",
    "api_key": os.environ["APISROUTER_API_KEY"],
    "api_type": "openai",
    "base_url": "https://api.apisrouter.com/v1",
})

Dónde llama FinGPT realmente a una API de LLM.

FinGPT (AI4Finance-Foundation en GitHub, unas 21K estrellas) son dos cosas bajo un mismo nombre, y saber cuál de las dos mitades estás ejecutando decide si un endpoint personalizado importa en absoluto. La primera mitad son pesos abiertos afinados: los notebooks de entrenamiento LoRA para Llama y ChatGLM que hicieron conocido al proyecto. Esos corren localmente o en GPUs alquiladas a través de Hugging Face transformers, no hacen llamadas de chat-completions, y ninguna URL base les aplica. La segunda mitad son los pipelines de aplicación, y ahí es donde vive la superficie compatible con OpenAI. El pipeline de análisis multi-agente AG2 conecta tres AssistantAgents (un investigador de noticias, un analista de sentimiento y un asesor de inversión) a un LLMConfig, los aumenta con llamadas de herramienta de yfinance y un clasificador de sentimiento FinBERT local, y les deja pasarse un análisis de renta variable entre roles. El pipeline de análisis de informes financieros (fingpt/FinGPT_FinancialReportAnalysis) impulsa el ChatOpenAI de LangChain contra presentaciones de la SEC obtenidas a través de sec-api y Financial Modeling Prep. Ambos pipelines envían peticiones estándar /v1/chat/completions, ambos exponen el endpoint como un parámetro, y ambos reenvían el campo model como un string simple, que es lo que permite que un id de Claude o DeepSeek viaje sobre un api_type "openai" una vez que el endpoint detrás de base_url lo sirve.

Configuración completa: el pipeline AG2 y el pipeline de análisis de informes.

El pipeline AG2 es la integración más limpia. Reemplaza los valores de LLMConfig del notebook con el endpoint del gateway y tu id de modelo preferido, y los tres agentes más su bucle de uso de herramientas corren sin cambios. El lado de datos financieros (cotizaciones de yfinance, puntuación de sentimiento FinBERT) es local y libre de claves de API, así que el endpoint de LLM es la única dependencia externa que estás moviendo. El pipeline de análisis de informes usa el ChatOpenAI de LangChain, que acepta api_key y base_url como argumentos del constructor; el propio notebook upstream demuestra exactamente este par cuando muestra cómo cambiar a un servidor local compatible con OpenAI. Apunta los mismos dos argumentos al gateway en su lugar. Ten en cuenta que este notebook también quiere credenciales de SEC y Financial Modeling Prep para sus extracciones de datos; esas son claves de datos de mercado, sin relación con el endpoint de LLM, y se quedan como están.

import os
from autogen import AssistantAgent, LLMConfig

llm_config = LLMConfig({
    "model": "claude-sonnet-4-6",         # any catalog id
    "api_key": os.environ["APISROUTER_API_KEY"],
    "api_type": "openai",
    "base_url": "https://api.apisrouter.com/v1",
})

researcher = AssistantAgent(name="News_Researcher", llm_config=llm_config)
analyst = AssistantAgent(name="Sentiment_Analyst", llm_config=llm_config)
advisor = AssistantAgent(name="Investment_Advisor", llm_config=llm_config)

Elegir modelos para agentes de análisis financiero.

Como cada candidato es un string de modelo contra el mismo endpoint, el bucle práctico es fijar tus tickers y fechas, ejecutar el pipeline una vez por id candidato, y comparar la salida del asesor. El log de uso por clave tasa cada ejecución candidata por ti, lo que resuelve el argumento de calidad por token con números en lugar de instinto.

  • El rol de asesor es el cuello de botella de razonamiento. Sintetiza los hallazgos del investigador, las puntuaciones de sentimiento y el panorama de riesgo en una perspectiva, y un modelo de razonamiento de vanguardia (claude-opus-4-7, gpt-5.5) es donde esa síntesis deja de ser genérica.
  • Los roles de investigador y analista son roles de volumen: leer titulares, estructurar la salida de herramientas, puntuar borradores. claude-sonnet-4-6 o deepseek-v4-pro los mantiene afilados sin precio de vanguardia en cada turno intermedio.
  • El análisis de informes es una carga de trabajo de contexto largo. Una sección de un 10-K más contexto de precio objetivo es un prompt grande, así que prueba gemini-3.1-pro-preview o claude-sonnet-4-6 en el lado de las presentaciones antes de asumir el valor por defecto.
  • Las raíces de FinGPT son bilingües. Si tu pipeline lee presentaciones o noticias en chino, glm-5.2 y deepseek-v4-pro son nativamente fuertes ahí y direccionables a través del mismo endpoint por id.
  • Ejecutar un solo LLMConfig para todos los agentes es el valor por defecto del notebook, pero nada te impide construir dos diccionarios contra el mismo base_url, uno de vanguardia para el asesor y uno rápido para los lectores, y asignarlos por agente.

Pago por uso · por debajo del precio oficial

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

ModeloPrecio oficialNuestro precio
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
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

Advertencias: no todo base_url en FinGPT es el LLM.

FinGPT es un monorepo de investigación, y algunas cosas parecen ajustes de endpoint de LLM sin serlo. El market_sentiment.py del Forecaster tiene parámetros api_key y base_url, pero configuran un servicio de sentimiento de datos de mercado (leído de ADANOS_API_KEY), no un endpoint de chat-completions. Cambiar ese base_url no enruta ningún tráfico de LLM. Los propios modelos de FinGPT-Forecaster son pesos de Llama afinados servidos a través de Hugging Face, así que el demo del forecaster no es un consumidor compatible con OpenAI en absoluto. La plataforma Finogrid más nueva dentro del repo selecciona su LLM a través de una variable de entorno FINGPT_LLM_PROVIDER (openai, minimax o fingpt) y lee OPENAI_API_KEY para el proveedor openai. A julio de 2026, su archivo de entorno de ejemplo documenta el cambio de proveedor y la clave, pero ninguna variable de sobrescritura de URL base, así que trata a Finogrid como fuera de alcance para un gateway hasta que upstream documente una. Finalmente, el notebook AG2 fija ag2[openai] en 0.11.4 o más reciente. Las instalaciones más antiguas de la era pyautogen 0.2 configuran las mismas cuatro claves a través de entradas config_list en lugar de la clase LLMConfig; las claves son idénticas, así que el enrutamiento funciona, pero haz coincidir tu estilo de import con la generación de AutoGen que realmente tienes instalada.

Quién enruta FinGPT a través de un gateway.

  • Investigadores cuantitativos que ejecutan el análisis multi-agente sobre una lista de tickers. Docenas de turnos de agente por acción hacen que la visibilidad de uso por clave sea más útil que un panel de proveedor por vendedor.
  • Equipos que comparan calidad de análisis entre familias de modelos. Cada candidato es un string de modelo en LLMConfig, no una nueva integración de proveedor y cuenta.
  • Analistas que procesan presentaciones en volumen a través del pipeline de informes, donde las diferencias de precio de contexto largo entre ids dominan la factura.
  • Equipos de finanzas bilingües que emparejan ids fuertes en chino como glm-5.2 o deepseek-v4-pro con razonamiento de Claude o GPT, todo detrás de un endpoint.
  • Desarrolladores sin acceso a la facturación de un proveedor concreto. El acceso mediante recarga sin necesidad de tarjeta elimina la dependencia de registrarse en cada proveedor.

Verifica el endpoint y depura la primera ejecución.

Antes de lanzar el notebook, lista los modelos que tu clave puede direccionar; el string de model en LLMConfig debe coincidir exactamente con un id servido. Los fallos de primera ejecución siguen una lista corta. Un 401 significa que el api_key en el diccionario no es una clave válida para el endpoint en base_url; como ambos viven en el mismo diccionario, imprime el diccionario (sin la clave) y revisa que editaste la copia que los agentes realmente recibieron. Un error de modelo no encontrado es una errata en el id, y la salida de /v1/models es la grafía autorizada. Un error de conexión suele significar que base_url perdió su sufijo /v1, ya que el cliente añade /chat/completions a la base que le des. Y si el paso de sentimiento falla mientras el chat de agentes funciona, eso es el clasificador local FinBERT o una instalación de transformers faltante, no el gateway. Una vez que las peticiones fluyen, la consola de APIsRouter muestra el modelo por petición, el recuento de tokens y el gasto. Los pipelines multi-agente multiplican las llamadas rápidamente, y la vista de uso es cómo ves qué rol de agente está consumiendo los tokens antes de escalar la ejecución a una lista de seguimiento completa.

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

Preguntas frecuentes

¿FinGPT admite un endpoint personalizado compatible con OpenAI de fábrica?

Sí, en sus pipelines impulsados por API. El notebook de análisis multi-agente AG2 configura LLMConfig con api_type "openai" más un base_url, y el notebook de análisis de informes pasa base_url al ChatOpenAI de LangChain. Ambos son patrones upstream; los modelos locales afinados son una mitad separada y sin conexión del proyecto.

¿Pueden los agentes de FinGPT correr en modelos Claude o DeepSeek de esta forma?

Sí. El api_type se queda en "openai" y el campo model se reenvía como un string simple sobre /v1/chat/completions. Funciona cualquier id servido por el endpoint detrás de base_url, incluidos ids de Claude, DeepSeek, GLM y Gemini.

¿Sigo necesitando una cuenta de OpenAI para el pipeline AG2?

No. Con base_url apuntando al gateway y api_key guardando una clave del gateway, ninguna petición toca hosts de OpenAI. El propio notebook upstream lo demuestra enrutando a través de un endpoint no-OpenAI compatible.

¿Afecta un base_url personalizado a los datos de mercado o a la puntuación de sentimiento FinBERT de FinGPT?

No. Las cotizaciones de yfinance y el clasificador FinBERT corren localmente sin claves de API, y las credenciales de SEC y Financial Modeling Prep del pipeline de informes son claves de datos separadas. El endpoint de LLM es lo único que mueve base_url.

¿Qué hay del parámetro base_url en el market_sentiment.py del Forecaster?

Ese configura un servicio de sentimiento de datos de mercado autenticado por ADANOS_API_KEY, no un endpoint de LLM. Los propios modelos del Forecaster son pesos afinados servidos a través de Hugging Face, así que ningún enrutamiento compatible con OpenAI aplica ahí.

¿Admite también la plataforma Finogrid dentro de FinGPT un endpoint personalizado?

No documentado a julio de 2026. Finogrid selecciona un proveedor vía FINGPT_LLM_PROVIDER y lee OPENAI_API_KEY, pero su archivo de entorno de ejemplo no muestra ninguna sobrescritura de URL base, así que asume enrutamiento directo al proveedor ahí hasta que upstream añada una.