Agente de soporte veterinario — NutriPaw SaaS · Python + Anthropic SDK
messages=[{role:"user",...}]stop_reason="tool_use" y uno o varios bloques tool_use{"error":"..."} — nunca excepcionestool_result al historial y vuelve al paso 2 hasta stop_reason="end_turn"import anthropic, json client = anthropic.Anthropic() tools = [{ "name": "buscar_dieta", "description": "Busca dietas por especie y condicion", "input_schema": { "type": "object", "properties": { "especie": {"type": "string"}, "condicion": {"type": "string"} }, "required": ["especie", "condicion"] } }] def run_agent(user_msg): messages = [{"role": "user", "content": user_msg}] while True: response = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=4096, tools=tools, messages=messages ) messages.append({ "role": "assistant", "content": response.content }) if response.stop_reason == "end_turn": return next( b.text for b in response.content if hasattr(b, "text") ) # stop_reason == "tool_use" tool_results = [] for block in response.content: if block.type == "tool_use": result = execute_tool(block.name, block.input) tool_results.append({ "type": "tool_result", "tool_use_id": block.id, "content": result }) messages.append({ "role": "user", "content": tool_results })