Function calling allows Claude to interact with external functions and tools in a structured way. This guide will walk you through implementing function calling with Claude using Python, complete with examples and best practices.
Prerequisites
To get started, you’ll need:
- Python 3.7+
- anthropic Python package
- A valid API key from Anthropic
Basic Setup
from anthropic import Anthropicimport json# Initialize the clientanthropic = Anthropic(api_key='your-api-key')from anthropic import Anthropic import json # Initialize the client anthropic = Anthropic(api_key='your-api-key')from anthropic import Anthropic import json # Initialize the client anthropic = Anthropic(api_key='your-api-key')
Enter fullscreen mode Exit fullscreen mode
Defining Functions
function_schema = {"name": "get_weather","description": "Get the current weather for a specific location","parameters": {"type": "object","properties": {"location": {"type": "string","description": "City name or coordinates"},"unit": {"type": "string","enum": ["celsius", "fahrenheit"],"description": "Temperature unit"}},"required": ["location"]}}function_schema = { "name": "get_weather", "description": "Get the current weather for a specific location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "City name or coordinates" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperature unit" } }, "required": ["location"] } }function_schema = { "name": "get_weather", "description": "Get the current weather for a specific location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "City name or coordinates" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperature unit" } }, "required": ["location"] } }
Enter fullscreen mode Exit fullscreen mode
Making Function Calls
A Step-by-Step Guide to LLM Function Calling in PythonFunction calling allows Claude to interact with external functions and tools in a structured way. This guide will walk you through implementing function calling with Claude using Python, complete with examples and best practices.PrerequisitesTo get started, you'll need:Python 3.7+anthropic Python packageA valid API key from AnthropicBasic Setupfrom anthropic import Anthropicimport json# Initialize the clientanthropic = Anthropic(api_key='your-api-key')Defining Functionsfunction_schema = {"name": "get_weather","description": "Get the current weather for a specific location","parameters": {"type": "object","properties": {"location": {"type": "string","description": "City name or coordinates"},"unit": {"type": "string","enum": ["celsius", "fahrenheit"],"description": "Temperature unit"}},"required": ["location"]}}Making Function Callsdef get_weather(location, unit="celsius"):# This is a mock implementation but you can all call your APIreturn {"location": location,"temperature": 22 if unit == "celsius" else 72,"conditions": "sunny"}def process_function_call(message):try:# Parse the function call parametersparams = json.loads(message.content)# Call the appropriate functionif message.name == "get_weather":result = get_weather(**params)return json.dumps(result)else:raise ValueError(f"Unknown function: {message.name}")except Exception as e:return json.dumps({"error": str(e)})# Example conversation with function callingmessages = [{"role": "user","content": "What's the weather like in Paris?"}]while True:response = anthropic.messages.create(model="claude-3-5-haiku-latest",messages=messages,tools=[function_schema])# Check if Claude wants to call a functionif response.tool_calls:for tool_call in response.tool_calls:# Execute the functionresult = process_function_call(tool_call)# Add the function result to the conversationmessages.append({"role": "tool","tool_call_id": tool_call.id,"name": tool_call.name,"content": result})else:# Normal response - print and breakprint(response.content)breakA Step-by-Step Guide to LLM Function Calling in Python Function calling allows Claude to interact with external functions and tools in a structured way. This guide will walk you through implementing function calling with Claude using Python, complete with examples and best practices. Prerequisites To get started, you'll need: Python 3.7+ anthropic Python package A valid API key from Anthropic Basic Setup from anthropic import Anthropic import json # Initialize the client anthropic = Anthropic(api_key='your-api-key') Defining Functions function_schema = { "name": "get_weather", "description": "Get the current weather for a specific location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "City name or coordinates" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperature unit" } }, "required": ["location"] } } Making Function Calls def get_weather(location, unit="celsius"): # This is a mock implementation but you can all call your API return { "location": location, "temperature": 22 if unit == "celsius" else 72, "conditions": "sunny" } def process_function_call(message): try: # Parse the function call parameters params = json.loads(message.content) # Call the appropriate function if message.name == "get_weather": result = get_weather(**params) return json.dumps(result) else: raise ValueError(f"Unknown function: {message.name}") except Exception as e: return json.dumps({"error": str(e)}) # Example conversation with function calling messages = [ { "role": "user", "content": "What's the weather like in Paris?" } ] while True: response = anthropic.messages.create( model="claude-3-5-haiku-latest", messages=messages, tools=[function_schema] ) # Check if Claude wants to call a function if response.tool_calls: for tool_call in response.tool_calls: # Execute the function result = process_function_call(tool_call) # Add the function result to the conversation messages.append({ "role": "tool", "tool_call_id": tool_call.id, "name": tool_call.name, "content": result }) else: # Normal response - print and break print(response.content) breakA Step-by-Step Guide to LLM Function Calling in Python Function calling allows Claude to interact with external functions and tools in a structured way. This guide will walk you through implementing function calling with Claude using Python, complete with examples and best practices. Prerequisites To get started, you'll need: Python 3.7+ anthropic Python package A valid API key from Anthropic Basic Setup from anthropic import Anthropic import json # Initialize the client anthropic = Anthropic(api_key='your-api-key') Defining Functions function_schema = { "name": "get_weather", "description": "Get the current weather for a specific location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "City name or coordinates" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperature unit" } }, "required": ["location"] } } Making Function Calls def get_weather(location, unit="celsius"): # This is a mock implementation but you can all call your API return { "location": location, "temperature": 22 if unit == "celsius" else 72, "conditions": "sunny" } def process_function_call(message): try: # Parse the function call parameters params = json.loads(message.content) # Call the appropriate function if message.name == "get_weather": result = get_weather(**params) return json.dumps(result) else: raise ValueError(f"Unknown function: {message.name}") except Exception as e: return json.dumps({"error": str(e)}) # Example conversation with function calling messages = [ { "role": "user", "content": "What's the weather like in Paris?" } ] while True: response = anthropic.messages.create( model="claude-3-5-haiku-latest", messages=messages, tools=[function_schema] ) # Check if Claude wants to call a function if response.tool_calls: for tool_call in response.tool_calls: # Execute the function result = process_function_call(tool_call) # Add the function result to the conversation messages.append({ "role": "tool", "tool_call_id": tool_call.id, "name": tool_call.name, "content": result }) else: # Normal response - print and break print(response.content) break
Enter fullscreen mode Exit fullscreen mode
Best Practices
- Clear Function Descriptions
- Write detailed descriptions for your functions
- Specify parameter types and constraints clearly
- Include examples in the descriptions when helpful
- Input Validation
- Validate all function inputs before processing
- Return meaningful error messages
- Handle edge cases gracefully
- Response Formatting
- Return consistent JSON structures
- Include status indicators in responses
- Format error messages uniformly
4 . Security Considerations
- Validate and sanitize all inputs
- Implement rate limiting if needed
- Use appropriate authentication
- Don’t expose sensitive information in function descriptions
Conclusion
Function calling with Claude enables powerful integrations between the language model and external tools. By following these best practices and implementing proper error handling, you can create robust and reliable function-calling implementations.
暂无评论内容