OllamaFunctions 是一个实验性的 Python 库,它将 Ollama 模型封装为与 OpenAI Functions 相同的 API。
这使得开发者可以利用 Ollama 模型来调用特定的函数,并以结构化的方式获取输出。这个库的设计目的是为了让 Ollama 模型能够执行类似于 OpenAI 的函数调用功能,从而支持更复杂的交互和数据处理任务。通过 OllamaFunctions,可以定义函数的参数和描述,并通过模型的函数调用能力来执行这些函数,返回符合预设模式的结构化数据。
安装依赖
pip install langchain_experimental运行代码
import requests from langchain_experimental.llms.ollama_functions import OllamaFunctions from langchain_core.messages import HumanMessage, ToolMessage def exec_result(result): for tool_call in result.tool_calls: selected_tool = {"get_current_weather": get_current_weather}[tool_call["name"].lower()] tool_output = selected_tool(tool_call["args"]) def get_current_weather(args): city=args['location'] # 对城市名称进行URL编码 city_encoded = requests.utils.quote(city) # API URL,包含城市名称参数 api_url = f'https://query.asilu.com/weather/baidu/?city={city_encoded}' # 发送GET请求 response = requests.get(api_url) # 检查请求是否成功 if response.status_code == 200: # 解析响应的JSON数据 data = response.json() # 定义一个函数来显示天气数据 def display_weather(data): city = data["city"] update_time = data["update_time"] date = data["date"] print(f"城市: {city}") print(f"更新时间: {update_time}") print(f"日期: {date}") print("\n天气预报:") for weather in data["weather"]: date = weather["date"] weather_desc = weather["weather"] temp = weather["temp"] wind = weather["wind"] print(f"{date} - 天气: {weather_desc}, 温度: {temp}, 风: {wind}") # 显示天气数据 display_weather(data) else: print(f"请求失败,状态码: {response.status_code}") model = OllamaFunctions(model="qwen2:7b", format="json") model = model.bind_tools( tools=[ { "name": "get_current_weather", "description": "获取指定城市的天气预报", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称, " "例如: 上海", } }, "required": ["location"], }, } ], function_call={"name": "get_current_weather"}, ) result=model.invoke("现在上海的天气是怎么样的?") print(result) exec_result(result) #get_current_weather({'location': '上海'})
网友回复