当前位置: 首页 > news >正文

【LLM】大模型工具调用之AllTools模型

Zhipuai的GLM-4-AllTools 是专门为支持智能体和相关任务而进一步优化的模型版本。它能够自主理解用户的意图,规划复杂的指令,并能够调用一个或多个工具(例如网络浏览器、代码解释器和文本生图像)以完成复杂的任务。

截止20241021现在支持的工具:

工具介绍
智能编程助手智能编程助手(Code Interpreter)能够准确理解自然语言描述的编程需求,自动生成代码片段来解决实际问题。
安全代码沙盒安全代码沙盒(Sandbox)提供了一个安全的执行和测试环境,可以在其中模拟真实环境中的代码执行结果。
沙盒文件上传支持上传文件(File)给代码沙盒进行访问,模型理解数据字段格式,能够用于数据处理和分析等场景。
实时联网搜索实时联网搜索(Web Search)能够在互联网上实时搜索信息,基于全网的搜索结果进行分析,提供更实时更全面的答案。
网页浏览工具网页浏览工具(Browser)区别于联网搜索,能够打开指定的网页进行浏览,基于网页内容进行更深入的分析。
绘图设计工具绘图设计工具(Drawing tool)根据文本描述能够生成高质量、高分辨率的图片,支持多种图像风格,满足各类绘图需求。
函数调用能力函数调用能力(Function Call)允许AI助手调用外部函数,以执行特定任务或获取必要数据,实现与外部系统的无缝集成。

当前只支持SSE流式输出,可以累加拼接:

(1)调用网页搜索工具

# 浏览网页
from zhipuai import ZhipuAI
my_key = "xxx"
client = ZhipuAI(api_key=my_key) # 请填写您自己的APIKey
response = client.chat.completions.create(model="glm-4-alltools",  # 填写需要调用的模型名称messages=[{"role": "user","content":[{"type":"text","text":"北京五道口附近有哪些推荐的餐厅?"}]}],max_tokens= 40000,stream=True,tools=[{"type":"web_browser","web_browser":{"browser" :"auto"}}]
)# for chunk in response:
#     print(chunk)# 每个chunk内容:
# ChatCompletionChunk(id='20241021213650f82d5f06363d4209', choices=[Choice(delta=ChoiceDelta(content=None, role='assistant', tool_calls=None), finish_reason='stop', index=0)], created=1729517830, model='glm-4-alltools', usage=CompletionUsage(prompt_tokens=4281, completion_tokens=313, total_tokens=4594), extra_json=None, status='completed')# 循环读取流式输出的数据
def liu_ans(response):end_ans = ""for chunk in response:# chunk 是一个 ChatCompletionChunk 对象# 提取 choices 列表中的第一个 Choice 对象choice = chunk.choices[0]# 提取 delta 属性中的 contentcontent = choice.delta.contentif content is not None:# print(content)end_ans += contentreturn end_ansend_ans = liu_ans(response)
print(end_ans)

得到的结果如下(搜了下确实有这几家店):

在北京五道口附近,有几家被推荐的餐厅您可以考虑试试:1. **水平有限**:这家店以螺蛳粉著称,被认为是京城最佳之一。店面风格小资,食物口味浓郁。米粉口感好,配料丰富。2. **乐山油炸巴蜀二荆条**:这是一家特色的乐山风味小吃店,主要提供各种油炸串串。除此之外,还有许多其他风格的餐厅可以选择,比如重庆火锅、烧烤、韩式烤肉等不同风味的餐馆,满足不同的口味需求。具体的餐厅信息和位置,您可以查阅知乎相关文章或网易新闻提供的详细列表。[知乎专栏](https://zhuanlan.zhihu.com/p/387669298)[网易新闻](https://www.163.com/dy/article/DP3M98AU05421G3J.html)[知乎问题](https://www.zhihu.com/question/21967026?sort=created&page=1)上有更详细的介绍和建议。

(2)使用自定义的函数get_tourist_data_by_year

from zhipuai import ZhipuAI
my_key = "xxx"
client = ZhipuAI(api_key=my_key) # 请填写您自己的APIKey
response = client.chat.completions.create(model="glm-4-alltools",  # 填写需要调用的模型名称messages=[{"role": "user","content":[{"type":"text","text":"帮我查询2018年至2024年,每年五一假期全国旅游出行数据,并绘制成柱状图展示数据趋势。"}]}],stream=True,tools=[{"type": "function","function": {"name": "get_tourist_data_by_year","description": "用于查询每一年的全国出行数据,输入年份范围(from_year,to_year),返回对应的出行数据,包括总出行人次、分交通方式的人次等。","parameters": {"type": "object","properties": {"type": {"description": "交通方式,默认为by_all,火车=by_train,飞机=by_plane,自驾=by_car","type": "string"},"from_year": {"description": "开始年份,格式为yyyy","type": "string"},"to_year": {"description": "结束年份,格式为yyyy","type": "string"}},"required": ["from_year","to_year"]}}},{"type": "code_interpreter"}]
)# for chunk in response:
#     print(chunk)
# 循环读取流式输出的数据
def liu_ans(response):end_ans = ""for chunk in response:# chunk 是一个 ChatCompletionChunk 对象# 提取 choices 列表中的第一个 Choice 对象choice = chunk.choices[0]# 提取 delta 属性中的 contentcontent = choice.delta.contentif content is not None:# print(content)end_ans += contentreturn end_ansend_ans = liu_ans(response)
print(end_ans)

注意工具的写法如下:

参数名称类型是否必填参数说明
typeString设置为function
functionObject
nameString函数名称
descriptionString用于描述函数功能。模型会根据这段描述决定函数调用方式。
parametersObjectparameters字段需要传入一个 Json Schema 对象,以准确地定义函数所接受的参数。

http://www.mrgr.cn/news/55633.html

相关文章:

  • 程序员的浪漫之给对象爬数据,没想到过程中竟然被写接口的老哥字段命名给秀到了!
  • nfs 中 lockd 与 statd 的作用
  • 【Linux】僵尸进程和孤儿进程
  • Axure复选框全选反选取消高级交互
  • mysql--视图
  • 【云从】九、CDN加速
  • 【状态机DP】力扣1262. 可被三整除的最大和
  • 01-编程入门
  • 传感器信号的存储和传输
  • 首个统一生成和判别任务的条件生成模型框架BiGR:专注于增强生成和表示能力,可执行视觉生成、辨别、编辑等任务
  • Qt学习笔记第21到30讲
  • DataWhale10月动手实践——Bot应用开发task04学习笔记
  • MySQL 服务器配置与管理<二>
  • CAS 详解
  • Reverse.Kr—— 前四题
  • 08-流程控制语句
  • 简单汇编教程9 字符串与字符串指令
  • tkintrt.Button位置试炼——计算器“键盘”
  • MySQL—CRUD—进阶—(二) (ಥ_ಥ)
  • 基于springboot的网上服装商城推荐系统的设计与实现
  • BitNet: Scaling 1-bit Transformers for Large Language Models
  • 数据库中常用的函数及函数应用
  • FCITX5的一些小命令
  • Spring Boot:如何实现JAR包的直接运行
  • 静态代码块为什么不能放在构造函数中
  • 在C++中比大小