Spaces:
Runtime error
Runtime error
uuu
Browse files- my_tools.py +34 -20
my_tools.py
CHANGED
|
@@ -234,35 +234,49 @@ scrape_tool = FunctionTool.from_defaults(fn=scrape_wikipedia_table, name="scrap
|
|
| 234 |
fallback_tool= FunctionTool.from_defaults(fn=lambda q: "Procedo con conocimiento interno.", name="no_tool_solution", description="Fallback.")
|
| 235 |
all_tools = [search_tool, scrape_tool, table_tool, code_tool, excel_tool, botanical_tool, reverse_tool, fallback_tool]
|
| 236 |
|
| 237 |
-
#
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
|
|
|
|
|
|
| 241 |
system_prompt = (
|
| 242 |
-
"Eres Alfred, un agente ReAct eficiente y preciso. Tu objetivo es responder preguntas de forma correcta.
|
| 243 |
-
|
| 244 |
-
"
|
| 245 |
-
|
| 246 |
-
"
|
| 247 |
-
|
| 248 |
-
"
|
| 249 |
-
|
| 250 |
-
"
|
| 251 |
-
|
| 252 |
-
" -
|
| 253 |
-
|
| 254 |
-
"
|
| 255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 256 |
)
|
| 257 |
|
| 258 |
-
#
|
| 259 |
llm = GeminiLLM()
|
| 260 |
alfred_agent = ReActAgent.from_tools(tools=all_tools, llm=llm, system_prompt=system_prompt, verbose=True, max_iterations=15, callback_manager=llm.callback_manager)
|
| 261 |
|
|
|
|
|
|
|
| 262 |
def basic_agent_response(question: str) -> str:
|
| 263 |
try:
|
| 264 |
resp = alfred_agent.query(question)
|
| 265 |
return resp.response or "No response."
|
| 266 |
except Exception as e:
|
| 267 |
return f"Error crítico: {e}"
|
| 268 |
-
|
|
|
|
| 234 |
fallback_tool= FunctionTool.from_defaults(fn=lambda q: "Procedo con conocimiento interno.", name="no_tool_solution", description="Fallback.")
|
| 235 |
all_tools = [search_tool, scrape_tool, table_tool, code_tool, excel_tool, botanical_tool, reverse_tool, fallback_tool]
|
| 236 |
|
| 237 |
+
# Construir descripciones de herramientas
|
| 238 |
+
# Cada FunctionTool tiene .name y .tool_config.description
|
| 239 |
+
tool_descriptions = "
|
| 240 |
+
".join([f"{t.name}: {t.tool_config.description}" for t in all_tools])
|
| 241 |
+
|
| 242 |
+
# Prompt de sistema final
|
| 243 |
system_prompt = (
|
| 244 |
+
"Eres Alfred, un agente ReAct eficiente y preciso. Tu objetivo es responder preguntas de forma correcta.
|
| 245 |
+
"
|
| 246 |
+
"Sigue estos pasos rigurosamente:
|
| 247 |
+
"
|
| 248 |
+
"1. ANALIZA la pregunta cuidadosamente. Identifica la información clave y el tipo de respuesta esperada.
|
| 249 |
+
"
|
| 250 |
+
"2. PLANIFICA tu enfoque: ¿Qué herramienta(s) son las más adecuadas? ¿Necesitas varios pasos?
|
| 251 |
+
"
|
| 252 |
+
"3. EJECUTA: Usa la herramienta elegida. Formula entradas claras y concisas para las herramientas.
|
| 253 |
+
"
|
| 254 |
+
" - **Prueba cada herramienta que consideres relevante ANTES de recurrir a `no_tool_solution`.**
|
| 255 |
+
"
|
| 256 |
+
" - Si una herramienta falla o no da el resultado esperado, considera si otra herramienta podría ayudar o si necesitas reformular la entrada a la herramienta.
|
| 257 |
+
"
|
| 258 |
+
"4. OBSERVA el resultado de la herramienta. ¿Es lo que esperabas? ¿Responde a la pregunta parcial o totalmente?
|
| 259 |
+
"
|
| 260 |
+
"5. VERIFICA: ¿La información obtenida es suficiente y correcta? ¿Necesitas más pasos o herramientas?
|
| 261 |
+
"
|
| 262 |
+
"6. RESPONDE: Una vez seguro de tener la respuesta final, clara y concisa, concluye tu pensamiento y proporciona la respuesta final al usuario.
|
| 263 |
+
"
|
| 264 |
+
"Prioriza el uso de herramientas específicas sobre la búsqueda web general si una herramienta especializada es aplicable.
|
| 265 |
+
"
|
| 266 |
+
"Herramientas disponibles (usa SOLO estos y con los nombres exactos):
|
| 267 |
+
"
|
| 268 |
+
f"{tool_descriptions}"
|
| 269 |
)
|
| 270 |
|
| 271 |
+
# Inicializar agente
|
| 272 |
llm = GeminiLLM()
|
| 273 |
alfred_agent = ReActAgent.from_tools(tools=all_tools, llm=llm, system_prompt=system_prompt, verbose=True, max_iterations=15, callback_manager=llm.callback_manager)
|
| 274 |
|
| 275 |
+
ReActAgent.from_tools(tools=all_tools, llm=llm, system_prompt=system_prompt, verbose=True, max_iterations=15, callback_manager=llm.callback_manager)
|
| 276 |
+
|
| 277 |
def basic_agent_response(question: str) -> str:
|
| 278 |
try:
|
| 279 |
resp = alfred_agent.query(question)
|
| 280 |
return resp.response or "No response."
|
| 281 |
except Exception as e:
|
| 282 |
return f"Error crítico: {e}"
|
|
|