【AI提升】AI利器Tool Call/Function Call(二):OpenAI/qwen-agent/LangChain/Ollama

旭日跑马踏云飞 2024-08-17 11:31:01 阅读 97

上一节快速使用了Tool Call 【AI提升】AI利器Tool Call/Function Call(一) ,使用的是LangChain+Ollama,这一节说说为什么使用这个组合,以及其余的使用场景。

首先大家都知道,在目前AI的世界里,各大模型都还是跟着OpenAI在跑,API也尽量跟OpenAI保持一致。所以这里大致会有三个场景:1、OpenAI,2、其余模型自身的封装-这里选择qwen-agent,3、通用封装框架-这里选择LangChain和Ollama。这一节通过 Tool Call/Function Call 这个概念来比较在上面三种场景中的使用区别。

一、OpenAI

没有购买,纯看代码

1.1 运行代码

<code>import openai

from openai import OpenAI

openai.api_key = "OPENAI_API_KEY"

openai.api_base= "OPENAI_API_URL"

# 第一步,获取大模型

client = OpenAI(api_key=openai.api_key ,base_url=openai.api_base)

# 第二步,定义业务函数

get_current_weather = {

"type": "function",

"function": {

"name": "get_current_weather",

"description": "Get the current weather in a given location",

"parameters": {

"type": "object",

"properties": {

"city": {

"type": "string",

"description": "The city and state, e.g. San Francisco, CA"

},

},

"required": ["city"],

},

}

}

tools = [get_current_weather]

# 第三步,发起交互

messages = [

{"role": "system", "content": "please input your question"},

{"role": "user", "content": "how is the weather in Beijing today"}

]

response = client.chat.completions.create(

model="gpt-3.5-turbo",code>

messages=messages,

tools=tools,

tool_choice="auto", code>

)

print(response.choices[0].message)

结果如下:

ChatCompletionMessage(

    content=None, 

    role='assistant', 

    function_call=None, 

    tool_calls=[

        ChatCompletionMessageToolCall(

            id='call_OqKaG4mk8Z5oEVKCYsd5rSCO', 

            function=Function(

                arguments='{"city": "San Francisco, CA"}', 

                name='get_current_weather'

            ), 

            type='function'

        )

    ]

二、qwen-agent

2.1 安装ollama

参考:【AI基础】大模型部署工具之ollama的安装部署-第一步:下载安装ollama

2.2 部署大模型

参考:【AI基础】大模型部署工具之ollama的安装部署-第二步:部署安装大模型

<code>> ollama pull qwen2

2.3 安装qwen-agent

> pip install qwen-agent

2.4 运行代码

from qwen_agent.llm import get_chat_model

# 第一步,获取大模型

client = get_chat_model({

'model': 'qwen2',

'model_server': 'http://127.0.0.1:11434/v1',

# (Optional) LLM hyper-paramters:

'generate_cfg': {

'top_p': 0.8

}

})

# 第二步,定义业务函数

get_current_weather = {

"name": "get_current_weather",

"description": "Get the current weather in a given location",

"parameters": {

"type": "object",

"properties": {

"city": {

"type": "string",

"description": "The city and state, e.g. San Francisco, CA"

},

},

"required": ["city"],

},

}

tools = [get_current_weather]

# 第三步,发起交互

messages = [

{'role': 'user', 'content': "What's the weather like in San Francisco?"}

]

# 此处演示流式输出效果

print('此处演示流式输出效果')

res_stream = []

for res_stream in client.chat(

messages=messages,

functions=tools,

stream=True):

print(res_stream)

# 此处演示输出效果

print('此处演示输出效果')

res = llm.chat(

messages=messages,

functions=tools,

stream=False

)

print(res)

结果如下:

[{

    'role': 'assistant', 

    'content': '', 

    'function_call': {

        'name': 'get_current_weather', 

        'arguments': '{"city": "San Francisco, CA"}'

    }

}]

三、LangChain

 3.1 安装ollama

参考:【AI基础】大模型部署工具之ollama的安装部署-第一步:下载安装ollama

3.2 部署大模型

参考:【AI基础】大模型部署工具之ollama的安装部署-第二步:部署安装大模型

<code>> ollama pull qwen2

3.3 安装LangChain

> pip install -q langchain_experimental

3.4 运行代码

from langchain_experimental.llms.ollama_functions import OllamaFunctions

# 第一步:获取大模型

client = OllamaFunctions(model='qwen2', base_url='http://localhost:11434', format='json')code>

# 第二步,定义业务函数

get_current_weather = {

'name': 'get_current_weather',

'description': 'Get the current weather in a given location',

'parameters': {

'type': 'object',

'properties': {

'city': {

'type': 'string',

'description': 'The city and state, e.g. San Francisco, CA',

}

},

'required': ['city'],

}

}

tools = [get_current_weather]

# 第三步,通过业务处理函数描述,把业务函数绑定到大模型上

client_with_tool = client.bind_tools(

tools=tools

)

# 第四步,发起交互

message = "What's the weather like in San Francisco?"

response = client_with_tool.invoke(message)

print(response)

结果如下:

content='' 

id='run-73971df7-2017-4320-b3b5-4f9c478a1815-0' 

tool_calls=[

    {

        'name': 'get_current_weather', 

        'args': {

            'city': 'San Francisco'

        }, 

        'id': 'call_bfa6d6c7e80740d2af1445a8d315ee1d'

    }

]

四、Ollama

ollama目前尚未支持Function Call功能。

参考官方文档:openai兼容api · ollama/ollama · GitHub 

等支持后再试试。 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。