# Tools can still be manually defined and passed into chat get_current_weather_tool = { 'type':'function', 'function': { 'name':'get_current_weather', 'description':'Get weather of location', 'parameters': { 'type':'object', 'required': ['location','format'], 'properties': { 'location': {'location':'string','description':'The location'}, 'format': {'format':'string','description':'The result format'}, }, }, }, }
messages = [{'role':'user','content':'What is the weather today in Shanghai?'}] print('Prompt:', messages[0]['content'])
forrespinresponse: # print('resp {}'.format(resp)) ifnotresp.message.tool_calls: print(resp['message']['content'], end='', flush=True) else: # There may be multiple tool calls in the response fortoolinresp.message.tool_calls: # Ensure the function is available, and then call it iffunction_to_call := available_functions.get(tool.function.name): print('Calling function:', tool.function.name) print('Arguments:', tool.function.arguments) output = function_to_call(**tool.function.arguments) print('Function output:', output) else: print('Function', tool.function.name,'not found')
# Add the function response to messages for the model to use messages.append(resp.message) messages.append({'role':'tool','content':str(output),'name': tool.function.name})
# Get final response from model with function outputs forfrinchat('qwen3:latest', messages=messages, stream=True): print(fr['message']['content'], end='', flush=True)
上述代码是获取指定位置的温度,得到结果后将温度传给模型,生成最终的结果:
$python weather.py Prompt: What is the weather today in Shanghai? <think> Okay, the user is asking for the weather in Shanghai today. Let me check the tools provided. There's a function called get_current_weather. The parameters required are location and format. The description mentions getting the weather for a location. Even though the parameters' descriptions are a bit unclear, location is a string, so I should provide "Shanghai" as the location. For format, maybe the user wants a simple response, so I'll use "json" as a common format. I'll call the function with these arguments. </think>
Calling function: get_current_weather Arguments: {'format': 'json', 'location': 'Shanghai'} Function output: 33 <think> Okay, the user asked about the weather in Shanghai today. I called the get_current_weather function with the location set to Shanghai and format as JSON. The response came back as "33". Hmm, that's not a typical weather description. Maybe the API returned a temperature in Celsius? 33°C is quite hot. Let me check if there's more data. Wait, the response was just "33", so maybe the API is broken or there was an error. Alternatively, maybe it's a placeholder. I should inform the user that the information is incomplete. I'll mention the temperature if I assume it's Celsius and note that other details aren't available. Let me make sure to ask them to check again later or try another source. </think>
The current weather in Shanghai is not fully available. However, based on the data received, the temperature is approximately **33°C**. For more detailed information (e.g., humidity, wind speed, or conditions), please check again later or use a dedicated weather service. Let me know if you'd like further assistance! ?️