智能体:实现智能函数调用

概要

随着人工智能技术的发展,特别是在自然语言处理领域,OpenAI推出了一种新的API——函数智能体(Functions Agent),它允许模型智能地选择何时调用外部函数,并传递正确的参数。这种技术相比传统的文本补全或聊天API,在返回有效和有用的函数调用方面更为可靠。本文将详细介绍如何使用OpenAI函数智能体,并通过一个具体的例子来演示其实现过程。

实现步骤

安装必要的库
首先,确保安装了openai和tavily-python库,因为LangChain软件包会在内部调用它们。

pip install openai tavily-python

初始化模型
接着,初始化您的模型实例,并指定API密钥和API基础URL。

from langchain_openai import ChatOpenAI

openai_api_key = "EMPTY"  # 用实际的API密钥替换
openai_api_base = "http://127.0.0.1:1234/v1"

model = ChatOpenAI(
    openai_api_key=openai_api_key,
    openai_api_base=openai_api_base,
    temperature=0.3,
)

创建工具
定义一个工具类,例如Weather,它包含获取天气数据的功能。

from langchain.tools import BaseTool
import requests
from typing import Any

class Weather(BaseTool):
    name = "weather"
    description = "根据城市获取天气数据"
    
    def __init__(self):
        super().__init__()

    def get_weather(self, location):
        api_key = "SKcA5FGgmLvN7faJi"  # 用实际的API密钥替换
        url = f"https://api.seniverse.com/v3/weather/now.json?key={api_key}&location={location}&language=zh-Hans&unit=c"
        response = requests.get(url)
        if response.status_code == 200:
            data = response.json()
            weather = {
                'description': data['results'][0]["now"]["text"],
                'temperature': data['results'][0]["now"]["temperature"]
            }
            return weather
        else:
            raise Exception(f"失败接收天气信息:{response.status_code}")

    def _run(self, para):
        return self.get_weather(para)

创建工具实例
创建一个Weather工具实例,并使用它来获取天气数据。

weather_tool = Weather()
print(weather_tool.run({"para": "广州"}))

创建OpenAI Functions Agent
使用LangChain提供的工具和模型来创建一个OpenAI Functions Agent。

from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain import hub

# 获取要使用的提示模板
prompt = hub.pull("hwchase17/openai-functions-agent")

# 创建工具列表
tools = [weather_tool]

# 构建OpenAI Functions Agent
agent = create_openai_functions_agent(model, tools, prompt)

调用代理执行器
最后,通过调用invoke方法来测试代理执行器的功能。

result = agent_executor.invoke({"input": "今天广州的天气"})
print(result)

示例输出
当您询问今天的天气时,代理执行器将调用天气工具,并返回结果:

{
  "input": "今天广州的天气",
  "output": "很抱歉,我无法实时查询最新的天气信息。请访问可靠的天气网站或使用气象应用程序来获取最新、最准确的天气预报。"
}

小结

通过本文,我们了解了如何使用OpenAI函数智能体来创建一个能够根据输入动态调用函数的智能代理。这个过程不仅增强了代理的功能性,还提高了其智能水平。希望这篇博客能够帮助你更好地理解和应用OpenAI函数智能体,以提升你的项目的智能化程度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值