AI-Agentic / src /agent /linkedin_agent.py
efeperro's picture
Update src/agent/linkedin_agent.py
53aac23 verified
# agent/linkedin_agent.py
import os
from openai import OpenAI
from agents import Agent
from agents import OpenAIResponsesModel
from tools.web_search_tool import get_web_search_tool
# Asegúrate de tener la variable de entorno OPENAI_API_KEY definida en tu sistema
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
if not OPENAI_API_KEY:
raise ValueError("Debes exportar la clave OPENAI_API_KEY antes de ejecutar el agente.")
# Cliente de OpenAI para pasar al modelo
client = OpenAI(api_key=OPENAI_API_KEY)
def create_agent():
"""
Crea y retorna un Agent configurado para:
- Usar el modelo '04-mini-high' (OpenAIChatCompletionsModel).
- Tener como tool el WebSearchTool nativo de OpenAI Agents SDK.
- Instrucciones en español para buscar perfiles de LinkedIn según oferta de empleo.
"""
# 1) Primero, instanciamos el modelo basado en 04-mini-high:
model = OpenAIResponsesModel(
model="o4-mini",
openai_client=client
)
# 2) Obtenemos el WebSearchTool nativo:
web_search = get_web_search_tool()
# 3) Construimos el agente con instrucciones muy explícitas:
instrucciones = """
Eres un agente que recibe dos entradas:
1) Una descripción de oferta de empleo en español.
2) Un número entero N (cantidad de perfiles a extraer).
Tu tarea:
a) Extraer los términos clave de la oferta.
b) Invocar la herramienta `web_search` para buscar en Google sitios de LinkedIn
(usando algo como 'site:linkedin.com/in <términos clave>').
c) Devolver hasta N perfiles en un formato de lista donde cada elemento tenga:
- Nombre del candidato (si está en el título o snippet de búsqueda).
- Enlace completo al perfil de LinkedIn (URL).
d) Presenta los resultados en un texto claro, cada perfil en una línea separada.
Ejemplo de salida (para N=2):
1. Juan Pérez - https://www.linkedin.com/in/juan-perez-12345 (Ingeniero de Software)
2. María Gómez - https://www.linkedin.com/in/maria-gomez-67890 (Desarrolladora Backend)
"""
agent = Agent(
name="linkedin_agent",
instructions=instrucciones,
model=model,
tools=[web_search]
)
return agent