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': '上海'}) 网友回复
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


