在AI技术的不断进步过程中,增强模型功能的方法层出不穷。OllamaFunctions是一个实验性封装器,旨在为原生不支持工具调用的模型增加这一功能。本文将详细介绍如何使用OllamaFunctions来实现工具调用能力,尽管它现在只是一个实验性功能,但在未来或许会带来更广阔的应用空间。
技术背景介绍
OllamaFunctions最初设计用于为不支持工具调用的模型提供此能力,主要通过与langchain-experimental的集成实现。虽然现在有更优化的Ollama集成支持工具调用,但了解实验性封装如何工作仍具有技术价值。
核心原理解析
OllamaFunctions通过将Pydantic类、字典模式、LangChain工具或函数传递给模型,实现工具调用功能。这些工具以工具定义模式进行转换,使得模型能够以结构化格式接收和处理指令。
代码实现演示
首先,确保已经安装langchain-experimental包,以便能够使用OllamaFunctions。
%pip install -qU langchain-experimental
OllamaFunctions初始化
OllamaFunctions的初始化参数与ChatOllama类似,但需要指定format="json"以启用工具调用功能。
from langchain_experimental.llms.ollama_functions import OllamaFunctions
# 初始化phi3模型
llm = OllamaFunctions(model="phi3")
简单翻译示例
# 设置消息
messages = [
("system", "You are a helpful assistant that translates English to French. Translate the user sentence."),
("human", "I love programming."),
]
# 调用模型进行翻译
ai_msg = llm.invoke(messages)
print(ai_msg.content) # 输出: "J'adore programmer."
工具调用示例
我们可以使用bind_tools方法绑定自定义工具。这些工具可以是Pydantic类或其他可运行的函数。
from langchain_core.pydantic_v1 import BaseModel, Field
# 定义GetWeather工具
class GetWeather(BaseModel):
"""获取指定位置的当前天气"""
location: str = Field(..., description="The city and state, e.g. San Francisco, CA")
# 绑定工具到模型
llm_with_tools = llm.bind_tools([GetWeather])
# 使用工具调用
ai_msg = llm_with_tools.invoke("what is the weather like in San Francisco")
print(ai_msg.tool_calls) # 输出工具调用结果
应用场景分析
OllamaFunctions适合在需要扩展模型能力的情况下使用,尤其是当需要对接外部工具和服务时。这个实验性功能在配置和使用自定义工具时也能提供较好的灵活性。
实践建议
虽然OllamaFunctions目前是实验性项目,但在升级到支持工具调用的更强大集成时,这种操作经验将非常有帮助。在使用该功能时,建议谨慎配置工具,并确保对接服务可用。
如果遇到问题欢迎在评论区交流。
—END—
3万+

被折叠的 条评论
为什么被折叠?



