Please wait while we prepare your experience
Tool calling allows HelpingAI to execute functions and access external data sources during conversations. This enables the AI to perform actions like fetching real-time information, making calculations, or interacting with external APIs.
import requests
import json
def get_weather(location):
# Mock weather function
return f"The weather in {location} is sunny and 72°F"
url = "https://api.helpingai.co/v1/chat/completions"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name"
}
},
"required": ["location"]
}
}
}]
data = {
"model": "Dhanishtha-2.0-preview",
"messages": [
{"role": "user", "content": "What's the weather like in Tokyo?"}
],
"tools": tools,
"tool_choice": "auto"
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
# Check if AI wants to call a function {#check-if-ai-wants-to-call-a-function}
message = result['choices'][0]['message']
if message.get('tool_calls'):
# Execute the function
tool_call = message['tool_calls'][0]
function_name = tool_call['function']['name']
function_args = json.loads(tool_call['function']['arguments'])
if function_name == "get_weather":
function_result = get_weather(function_args['location'])
# Send function result back to AI
data['messages'].extend([
message, # AI's message with tool call
{
"role": "tool",
"tool_call_id": tool_call['id'],
"content": function_result
}
])
# Get final response
final_response = requests.post(url, headers=headers, json=data)
print(final_response.json()['choices'][0]['message']['content'])
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.helpingai.co/v1",
api_key="YOUR_API_KEY"
)
def get_weather(location):
return f"The weather in {location} is sunny and 72°F"
def get_stock_price(symbol):
return f"The current price of {symbol} is $150.25"
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
},
{
"type": "function",
"function": {
"name": "get_stock_price",
"description": "Get current stock price",
"parameters": {
"type": "object",
"properties": {
"symbol": {"type": "string", "description": "Stock symbol"}
},
"required": ["symbol"]
}
}
}
]
messages = [
{"role": "user", "content": "What's the weather in New York and the stock price of AAPL?"}
]
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice="auto"
)
# Handle tool calls {#handle-tool-calls}
message = response.choices[0].message
if message.tool_calls:
messages.append(message)
for tool_call in message.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
if function_name == "get_weather":
result = get_weather(function_args['location'])
elif function_name == "get_stock_price":
result = get_stock_price(function_args['symbol'])
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
# Get final response
final_response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages
)
print(final_response.choices[0].message.content)
from helpingai import HelpingAI
import json
client = HelpingAI(api_key="YOUR_API_KEY")
def calculate_tip(bill_amount, tip_percentage):
tip = bill_amount * (tip_percentage / 100)
total = bill_amount + tip
return {
"tip_amount": tip,
"total_amount": total,
"bill_amount": bill_amount,
"tip_percentage": tip_percentage
}
tools = [{
"type": "function",
"function": {
"name": "calculate_tip",
"description": "Calculate tip and total amount for a bill",
"parameters": {
"type": "object",
"properties": {
"bill_amount": {"type": "number", "description": "The bill amount"},
"tip_percentage": {"type": "number", "description": "Tip percentage (e.g., 15 for 15%)"}
},
"required": ["bill_amount", "tip_percentage"]
}
}
}]
messages = [
{"role": "user", "content": "I have a $85 bill and want to tip 18%. How much should I pay?"}
]
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
if message.tool_calls:
messages.append(message)
for tool_call in message.tool_calls:
function_args = json.loads(tool_call.function.arguments)
result = calculate_tip(function_args['bill_amount'], function_args['tip_percentage'])
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result)
})
final_response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages
)
print(final_response.choices[0].message.content)
const axios = require('axios');
async function getWeather(location) {
return `The weather in ${location} is sunny and 72°F`;
}
async function toolCallingExample() {
const tools = [{
type: "function",
function: {
name: "get_weather",
description: "Get current weather for a location",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "The city name"
}
},
required: ["location"]
}
}
}];
let messages = [
{role: "user", content: "What's the weather like in London?"}
];
// Initial request
let response = await axios.post(
'https://api.helpingai.co/v1/chat/completions',
{
model: 'Dhanishtha-2.0-preview',
messages: messages,
tools: tools,
tool_choice: "auto"
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
const message = response.data.choices[0].message;
if (message.tool_calls) {
messages.push(message);
for (const toolCall of message.tool_calls) {
const functionName = toolCall.function.name;
const functionArgs = JSON.parse(toolCall.function.arguments);
let result;
if (functionName === "get_weather") {
result = await getWeather(functionArgs.location);
}
messages.push({
role: "tool",
tool_call_id: toolCall.id,
content: result
});
}
// Get final response
const finalResponse = await axios.post(
'https://api.helpingai.co/v1/chat/completions',
{
model: 'Dhanishtha-2.0-preview',
messages: messages
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(finalResponse.data.choices[0].message.content);
}
}
toolCallingExample();
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'https://api.helpingai.co/v1',
apiKey: 'YOUR_API_KEY'
});
async function searchWeb(query) {
return `Search results for "${query}": Found 3 relevant articles about ${query}.`;
}
async function main() {
const tools = [{
type: "function",
function: {
name: "search_web",
description: "Search the web for information",
parameters: {
type: "object",
properties: {
query: {
type: "string",
description: "Search query"
}
},
required: ["query"]
}
}
}];
let messages = [
{role: "user", content: "Can you search for information about climate change?"}
];
const response = await openai.chat.completions.create({
model: 'Dhanishtha-2.0-preview',
messages: messages,
tools: tools,
tool_choice: "auto"
});
const message = response.choices[0].message;
if (message.tool_calls) {
messages.push(message);
for (const toolCall of message.tool_calls) {
const functionArgs = JSON.parse(toolCall.function.arguments);
const result = await searchWeb(functionArgs.query);
messages.push({
role: "tool",
tool_call_id: toolCall.id,
content: result
});
}
const finalResponse = await openai.chat.completions.create({
model: 'Dhanishtha-2.0-preview',
messages: messages
});
console.log(finalResponse.choices[0].message.content);
}
}
main();
import { HelpingAI } from 'helpingai';
const client = new HelpingAI({
apiKey: 'YOUR_API_KEY'
});
async function sendEmail(to, subject, body) {
return `Email sent to ${to} with subject "${subject}"`;
}
async function main() {
const tools = [{
type: "function",
function: {
name: "send_email",
description: "Send an email",
parameters: {
type: "object",
properties: {
to: {type: "string", description: "Recipient email"},
subject: {type: "string", description: "Email subject"},
body: {type: "string", description: "Email body"}
},
required: ["to", "subject", "body"]
}
}
}];
let messages = [
{role: "user", content: "Send an email to john@example.com about the meeting tomorrow"}
];
const response = await client.chat.completions.create({
model: 'Dhanishtha-2.0-preview',
messages: messages,
tools: tools,
tool_choice: "auto"
});
const message = response.choices[0].message;
if (message.tool_calls) {
messages.push(message);
for (const toolCall of message.tool_calls) {
const functionArgs = JSON.parse(toolCall.function.arguments);
const result = await sendEmail(
functionArgs.to,
functionArgs.subject,
functionArgs.body
);
messages.push({
role: "tool",
tool_call_id: toolCall.id,
content: result
});
}
const finalResponse = await client.chat.completions.create({
model: 'Dhanishtha-2.0-preview',
messages: messages
});
console.log(finalResponse.choices[0].message.content);
}
}
main();
Control when tools are used with the tool_choice
parameter:
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice="auto" # AI decides when to use tools
)
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice="none" # Never use tools
)
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice="required" # Must use a tool
)
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice={
"type": "function",
"function": {"name": "get_weather"}
}
)
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.helpingai.co/v1",
api_key="YOUR_API_KEY"
)
def get_user_info(user_id):
return {"name": "John Doe", "email": "john@example.com", "role": "developer"}
def get_project_status(project_id):
return {"status": "in_progress", "completion": "75%", "deadline": "2024-01-15"}
tools = [
{
"type": "function",
"function": {
"name": "get_user_info",
"description": "Get user information",
"parameters": {
"type": "object",
"properties": {
"user_id": {"type": "string"}
},
"required": ["user_id"]
}
}
},
{
"type": "function",
"function": {
"name": "get_project_status",
"description": "Get project status",
"parameters": {
"type": "object",
"properties": {
"project_id": {"type": "string"}
},
"required": ["project_id"]
}
}
}
]
messages = [
{"role": "user", "content": "Get info for user 123 and status for project ABC"}
]
response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
if message.tool_calls:
messages.append(message)
for tool_call in message.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
if function_name == "get_user_info":
result = get_user_info(function_args['user_id'])
elif function_name == "get_project_status":
result = get_project_status(function_args['project_id'])
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result)
})
final_response = client.chat.completions.create(
model="Dhanishtha-2.0-preview",
messages=messages
)
print(final_response.choices[0].message.content)
def safe_function_call(function_name, function_args):
try:
if function_name == "get_weather":
return get_weather(function_args['location'])
elif function_name == "calculate_tip":
return calculate_tip(function_args['bill_amount'], function_args['tip_percentage'])
else:
return {"error": f"Unknown function: {function_name}"}
except Exception as e:
return {"error": f"Function execution failed: {str(e)}"}
# Use in tool call handling {#use-in-tool-call-handling}
for tool_call in message.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
result = safe_function_call(function_name, function_args)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result)
})