File size: 2,188 Bytes
da48de3
 
 
 
 
533d5a8
c07171f
da48de3
 
 
 
 
 
 
 
 
d457ddc
da48de3
 
 
 
 
 
 
 
 
533d5a8
53aac23
da48de3
 
 
 
7abf0e0
da48de3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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