# 引言

在现代AI应用中,模型的工具调用能力尤为重要。这种能力允许AI模型不仅仅提供简单的答案,还能以结构化的方式调用外部工具执行复杂任务。然而,并非所有模型都原生支持这种功能。这篇文章将介绍如何使用一个实验性的封装器——OllamaFunctions,为不支持工具调用的模型赋能,尤其是在使用LLaMA3和Phi3等模型时。

# 主要内容

### 1. OllamaFunctions概述

OllamaFunctions是一个实验性的封装器,通过在模型上“加装”工具调用能力,使其能够处理更复杂的任务。虽然现在Ollama的主要集成已经支持工具调用,OllamaFunctions仍然提供了一种探索这种特性的方式。

### 2. 功能特征

- **工具调用**:允许模型通过定义好的工具调用外部服务。
- **结构化输出**:以JSON的形式返回结果,便于解析。
- **其他支持**:包括JSON模式、图片输入等。

### 3. 安装和初始化

要使用OllamaFunctions,你需要安装`langchain-experimental`包:

```bash
%pip install -qU langchain-experimental

初始化OllamaFunctions:

from langchain_experimental.llms.ollama_functions import OllamaFunctions

llm = OllamaFunctions(model="phi3")

4. 工具绑定

OllamaFunctions支持将Pydantic类、字典模式或函数绑定为工具:

from langchain_core.pydantic_v1 import BaseModel, Field

class GetWeather(BaseModel):
    """获取给定位置的当前天气"""
    location: str = Field(..., description="城市和州,例如,San Francisco, CA")

llm_with_tools = llm.bind_tools([GetWeather])

ai_msg = llm_with_tools.invoke(
    "what is the weather like in San Francisco",
)
# 使用API代理服务提高访问稳定性

代码示例

以下是一个完整的代码示例,展示如何翻译文本并调用工具获取天气信息:

from langchain_experimental.llms.ollama_functions import OllamaFunctions
from langchain_core.pydantic_v1 import BaseModel, Field

# 初始化OllamaFunctions
llm = OllamaFunctions(model="phi3")  # 使用API代理服务提高访问稳定性

# 翻译功能示例
messages = [
    ("system", "You are a helpful assistant that translates English to French."),
    ("human", "I love programming.")
]
ai_msg = llm.invoke(messages)
print(ai_msg.content)  # 输出: "J'adore programmer."

# 定义并绑定天气工具
class GetWeather(BaseModel):
    location: str = Field(..., description="城市和州,例如,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)

常见问题和解决方案

1. 网络访问问题

由于某些地区的网络限制,开发者在请求API时可能会遇到访问不稳定的问题。可以考虑使用API代理服务来提高稳定性。

2. 模型性能问题

对于复杂的任务,选择更强大的模型(如LLaMA3和Phi3)会显著提升性能。

总结和进一步学习资源

OllamaFunctions为不支持工具调用功能的AI模型提供了一个极具实用性的解决方案。在尝试使用时,请确保选择合适的环境和模型,以获得最佳性能体验。

进一步学习资源:

参考资料

  1. OllamaFunctions API 参考
  2. LangChain 官方文档
  3. Pydantic 官方文档

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

---END---
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐