efeperro commited on
Commit
8dc6f4b
·
verified ·
1 Parent(s): b25b1c5

Update agent/linkedin_agent.py

Browse files
Files changed (1) hide show
  1. agent/linkedin_agent.py +60 -0
agent/linkedin_agent.py CHANGED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # agent/linkedin_agent.py
2
+
3
+ import os
4
+ from openai import OpenAI
5
+ from agents import Agent
6
+ from agents.models import OpenAIChatCompletionsModel
7
+ from tools.web_search_tool import get_web_search_tool
8
+
9
+ # Asegúrate de tener la variable de entorno OPENAI_API_KEY definida en tu sistema
10
+ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
11
+ if not OPENAI_API_KEY:
12
+ raise ValueError("Debes exportar la clave OPENAI_API_KEY antes de ejecutar el agente.")
13
+
14
+ # Cliente de OpenAI para pasar al modelo
15
+ client = OpenAI(api_key=OPENAI_API_KEY)
16
+
17
+ def create_agent():
18
+ """
19
+ Crea y retorna un Agent configurado para:
20
+ - Usar el modelo '04-mini-high' (OpenAIChatCompletionsModel).
21
+ - Tener como tool el WebSearchTool nativo de OpenAI Agents SDK.
22
+ - Instrucciones en español para buscar perfiles de LinkedIn según oferta de empleo.
23
+ """
24
+
25
+ # 1) Primero, instanciamos el modelo basado en 04-mini-high:
26
+ model = OpenAIChatCompletionsModel(
27
+ model="04-mini-high",
28
+ openai_client=client
29
+ )
30
+
31
+ # 2) Obtenemos el WebSearchTool nativo:
32
+ web_search = get_web_search_tool()
33
+
34
+ # 3) Construimos el agente con instrucciones muy explícitas:
35
+ instrucciones = """
36
+ Eres un agente que recibe dos entradas:
37
+ 1) Una descripción de oferta de empleo en español.
38
+ 2) Un número entero N (cantidad de perfiles a extraer).
39
+
40
+ Tu tarea:
41
+ a) Extraer los términos clave de la oferta.
42
+ b) Invocar la herramienta `web_search` para buscar en Google sitios de LinkedIn
43
+ (usando algo como 'site:linkedin.com/in <términos clave>').
44
+ c) Devolver hasta N perfiles en un formato de lista donde cada elemento tenga:
45
+ - Nombre del candidato (si está en el título o snippet de búsqueda).
46
+ - Enlace completo al perfil de LinkedIn (URL).
47
+ d) Presenta los resultados en un texto claro, cada perfil en una línea separada.
48
+
49
+ Ejemplo de salida (para N=2):
50
+ 1. Juan Pérez - https://www.linkedin.com/in/juan-perez-12345 (Ingeniero de Software)
51
+ 2. María Gómez - https://www.linkedin.com/in/maria-gomez-67890 (Desarrolladora Backend)
52
+ """
53
+
54
+ agent = Agent(
55
+ name="linkedin_agent",
56
+ instructions=instrucciones,
57
+ model=model,
58
+ tools=[web_search]
59
+ )
60
+ return agent