LangChain实战技巧之四:当模型(Model)不支持Tool/Function的解决办法

文心大模型两大主力模型已全面免费,可参考我之前发的文章

AI菜鸟向前飞 — 今日三则AI相关新闻

图片

但是,这些模型原生并不支持Tool/Function Call

如下所示:

@tool
def greeting(name: str):
    '''向朋友致欢迎语'''
    return f"你好啊, {name}"

# 以ERNIE-Speed-8K为例,其他几款都一样
model_with_tool = QianfanChatEndpoint(model="ERNIE-Speed-8K").bind_tools([greeting])
model_with_tool.invoke("你好,我是你的新朋友")

输出结果

# 首先,映入眼帘的是 "不支持"(很直白的说了)
base.py:634 [t:4391572992]: This key `functions` does not seem to be a parameter that the model `ERNIE-Speed-8K` will accept

content='你好,很高兴认识你!请问你有什么想要聊的或者需要我帮助的地方吗?我会尽力提供帮助和支持。' additional_kwargs={'finish_reason': '', 'request_id': 'as-iv6grn9awc', 'object': 'chat.completion', 'search_info': [], 'function_call': {}, 'tool_calls': [{'type': 'function', 'function': {}}]} response_metadata={'token_usage': {'prompt_tokens': 36, 'completion_tokens': 21, 'total_tokens': 57}, 'model_name': 'ERNIE-Speed-8K', 'finish_reason': 'stop', 'id': 'as-iv6grn9awc', 'object': 'chat.completion', 'created': 1717174194, 'result': '你好,很高兴认识你!请问你有什么想要聊的或者需要我帮助的地方吗?我会尽力提供帮助和支持。', 'is_truncated': False, 'need_clear_history': False, 'usage': {'prompt_tokens': 36, 'completion_tokens': 21, 'total_tokens': 57}} id='run-a7ff5600-5962-40b8-b9ac-6168b85ee02d-0'

其中,content倒是比较多,关键注意观察tool_calls 部分

'tool_calls': [{'type': 'function', 'function': {}}]

果然没让你失望,免费的真的就是免费的,不支持Tool/Function Call

另外、可以先简单理解,tool是N个function的"合集"

那百度的这俩免费的model真无缘Tool/Function了么?

有解法,往后看...

  • 如果不支持bind_tools的话,我们可以自行编辑一份json格式的function,让LLM bind,请参考我之前写的这些内容

    AI菜鸟向前飞 — LangChain系列之十三 - 关于Tool的必知必会

    LangChain实战技巧之三:关于Tool的一点拓展

  • 已经实现"bind_tool"方法,即:让LLM知道工具,已经迈出一大步了,然后紧接着只需让LLM“聪明”的选择它(function)即可

可以尝试使用提示词(Prompt)的解法

prompt = ChatPromptTemplate.from_messages(

[("system",
"""
您是一名助理,可以使用以下工具。以下是工具的名称和说明:

工具名称:greeting, 参数:name(str类型),此工具的用途说明:向朋友致欢迎语

根据用户输入,返回要使用的工具的名称和输入。以包含 "name" 和 "arguments" 键的 JSON blob 形式返回响应。
"""),

("user", "{input}")]

)

chain = prompt | model | JsonOutputParser()

chain.invoke("我是你的新朋友 —— Song榆钱儿")

我们用起来试试看

{'name': 'greeting', 'arguments': {'name': 'Song榆钱儿'}}

这虽然没执行函数,但这已经迈出一大步了,你往后看看 PS:LLM本身并不会执行任何函数,它只是完成了简单的交互逻辑

# 再来一个chain
tool_run_chain = prompt | model | JsonOutputParser() | (lambda x: x["arguments"]) | greeting
# 再看看效果
tool_run_chain.invoke("我是你的新朋友 —— Song榆钱儿")

效果如何,请君来看

你好啊, Song榆钱儿

这么做就将Model原本不支持Too/Function变成了“支持”

补充知识

# langchain提供了这样一个方法,很好用
from langchain.tools.render import render_text_description

# 可以用它来替代提示词中的工具说明,如下所示
prompt = ChatPromptTemplate.from_messages(
[("system",
f"""
您是一名助理,可以使用以下工具。以下是工具的名称和说明:

{render_text_description([greeting])}

根据用户输入,返回要使用的工具的名称和输入。以包含 "name" 和 "arguments" 键的 JSON blob 形式返回响应。
"""),
("user", "{input}")] 
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/669995.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

xilinx ip自带XDC只读

检查生成的IP核再目录下显示的文件类型是不是.xcix 如果是的话,重新生成为.xci 再二次编辑即可 或者 将框柱的部分不选择,从新生成

在潮流时尚的绿地新都会,竟然藏了一家神奇的工作室

绿地新都会新开的国学文化工作室有点不一样!拜师终南山汇通中西方文化融合东西方数术更适合中国宝宝体质的新天地 探索人生规律,改善家居环境,强化自身能量 查看人生剧本,观看图卡心理学TAROT 关于创始人妙霏老师 生活环境研究…

AWS 高防和阿里云高防深度对比

随着网络攻击的不断增加,企业对于网络安全的需求也越来越高。在这种情况下,高防护服务成为了企业网络安全的重要组成部分。AWS和阿里云作为全球领先的云计算服务提供商,都提供了高防护服务,但它们之间存在着一些差异。我们九河云一…

WebGL开发三维家装设计

使用WebGL开发三维家装设计软件是一项复杂而有趣的任务,涉及3D建模、渲染、用户交互等多个方面。以下是详细的开发步骤和技术要点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 需求分析 目标用户 家装设计师家装公…

二人订单共享结束制:终身受益的新模式

在当今快速发展的互联网时代,一个创新的商业模式总能引起广泛关注。其中,“二人订单共享结束制”以其独特的魅力,吸引了众多消费者和创业者的目光。这一模式不仅为消费者带来了实惠,更为创业者提供了一个全新的平台。 只需购买一…

机关——用钥匙开对应的门

代码展示 玩家背包代码&#xff08;挂载到玩家身上&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 玩家背包脚本&#xff0c;用来记录玩家道具 /// </summary> public class MyBag : MonoBeha…

2.8万字总结:金融核心系统数据库升级路径与场景实践

OceanBase CEO 杨冰 谈及数字化转型&#xff0c;如果说过去还只是头部金融机构带动效应下的“选择题”。那么现在&#xff0c;我相信数字化转型已经成为不论大、中、小型金融机构的“必答题”。 本文为OceanBase最新发布的《万字总结&#xff1a;金融核心系统数据库升级路径…

nssctf刷题总结

首先就是关于"\x00"截断问题&#xff0c;\x00被当做字符串的截止字符&#xff0c;这就很有趣了我们可以把\x00放在我们要发送数据的前面&#xff0c;经过\x00截断&#xff0c;后面的数据就不用读入了。。。。。。嘿嘿&#xff0c;好像听起来没什么用&#xff0c;确实…

CentOS7某天的samba服务搭建操作记录(还没成功)

#CentOS7 yum软件仓库阿里云 samba服务器配置失败 sensors成功了 (花了200元组装H61测试机&#xff0c;75元的主板只有一块能用&#xff0c;垃圾板但又不完全能用&#xff09; 2024.5月的某天记录如下&#xff1a; https://blog.csdn.net/dszgf5717/article/details/53732182 …

数据与结构——哈夫曼树

哈夫曼树的基本概念 哈夫曼树&#xff08;Huffman Tree&#xff09;是一种用于数据压缩的最优二叉树&#xff0c;广泛应用于哈夫曼编码中。其基本概念和构建方法如下&#xff1a; 基本概念 二叉树&#xff1a;哈夫曼树是一种特殊的二叉树。权重&#xff1a;每个节点都有一个…

【vue3 + Echarts 】中国地图省市区下钻,并返回上级

实现效果如果&#xff1a; echarts版本&#xff1a; 地图数据来源&#xff1a;阿里云数据可视化平台 代码 <template><div class"mapWrapper"><a-button type"primary" click"goBack">返回上级</a-button><div…

python编程:实现对数据库中图片文件的查看及比对

当谈到图像查看和管理时,我们往往会使用一些工具软件,比如Windows自带的照片查看器或者第三方工具。那如果你想要一个更加强大和定制化的图像查看器呢?这时候就需要自己动手写一个程序了。 C:\pythoncode\new\ShowSqliteImage.py 这里我们将介绍一个使用Python和wxPython编写…

赛轮集团受邀出席2024国际新能源智能网联汽车创新生态大会

赛轮集团受邀出席2024国际新能源智能网联汽车创新生态大会 5月22日-24日&#xff0c;以“汽车供应链的创新与重构”为主题的2024国际新能源智能网联汽车创新生态大会&#xff08;以下简称CIEV2024&#xff09;在温州瑞安隆重召开。会议期间&#xff0c;CIEV2024高端对话成功召…

Docker(Centos7+)

先确定是否 Centos 7 及以上的版本 查看是否 ping 通外网 linux centos7运行下面的代码&#xff0c;基本上都可以正常安装 # 删除之前的docker残留 yum -y remove docker*yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/…

Linux、Windows安装python环境(最新版及历史版本指定版本)-python

目录 一、Linux环境二、windows环境最新版本下载指定版本下载配置VScode开发环境 python 官网地址&#xff1a; https://www.python.org/ 一、Linux环境 以openEuler/CentOS为例 查看可安装python源版本 dnf provides python*默认安装新版本 dnf install -y python3. 进入p…

拼多多商品信息一键抓取:深度解析商品详情接口,Python实战代码来袭!

拼多多的商品详情接口允许开发者通过指定的商品ID获取商品的详细信息&#xff0c;如商品标题、价格、描述、图片等。接口采用HTTP请求方式&#xff0c;支持GET方法&#xff0c;返回格式为JSON。 三、接口调用 要调用拼多多的商品详情接口&#xff0c;你需要遵循以下步骤&…

C++ vector的使用和简单模拟实现(超级详细!!!)

目录 前言 1.STL是什么 2.vector使用 2.1 vector简介 2.2 常用接口函数 1. 构造函数 2.operator[ ]和size&#xff0c;push_back 3. 用迭代器进行访问和修改 4. 范围for遍历 5.修改类型函数 pop_back find insert erase 6. 容量相关函数capacity resize reserve 3.…

【Node】Assertion testing 模块的使用

简言 node:assert 模块提供了一组用于验证不变式的断言函数。 node版本&#xff1a;20.14.0 Assertion testing 测试断言模块 node:assert 模块是一个测试相关的模块。 严格模式和非严格模式 感觉该模块的严格模式和js的严格模式相匹配&#xff0c;非严格模式也是这样的。…

掘金AI 商战 宝典 进阶班:如何用AI绘画设计(实战实操 现学现用 玩赚超值)

课程内容 10-第十讲用AI做网站设计 11-第十一讲用AI做艺术字 12-第十二讲用AI做室内设计(上) 13-第十三讲用AI做室内设计(下) 14-第十四讲用AI抠图与修图 15-第十五讲用AI修复模糊照片 16-第十六讲用AI自动做PPT(上) 17-第十七讲用AI自动做PPT(下) 18-第十八讲用AI做文…

atcoder350,351,352,353,354,355期部分题解

声明&#xff1a;有些题感觉已经说到很明白了&#xff0c;就先不写代码了&#xff0c;有空会补上 目录 350D: new friend 350E: toward 0 351D:Grid and Magnet 352D:permutation subsequence 353C: sigma problem 353D: another sigma problem 354C: atcoder magics …