A 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')
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 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
A 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
A 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

  1. Clear Function Descriptions
  • Write detailed descriptions for your functions
  • Specify parameter types and constraints clearly
  • Include examples in the descriptions when helpful
  1. Input Validation
  • Validate all function inputs before processing
  • Return meaningful error messages
  • Handle edge cases gracefully
  1. 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.

原文链接:A Step-by-Step Guide to LLM Function Calling in Python

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
Finger rift,twisted in the love.
如果你为着错过夕阳而哭泣,那么你就要错群星了
评论 抢沙发

请登录后发表评论

    暂无评论内容