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

书店网站开发目的和意义运城网站建设兼职

书店网站开发目的和意义,运城网站建设兼职,在线定制英文名,字体设计生成器1 函数调用 虽然大模型能解决很多问题#xff0c;但大模型并不能知晓一切。比如#xff0c;大模型不知道最新消息(GPT-3.5 的知识截至 2021年9月#xff0c;GPT-4 是 2023 年12月)。另外#xff0c;大模型没有“真逻辑”。它表现出的逻辑、推理#xff0c;是训练文本的统计…1 函数调用 虽然大模型能解决很多问题但大模型并不能知晓一切。比如大模型不知道最新消息(GPT-3.5 的知识截至 2021年9月GPT-4 是 2023 年12月)。另外大模型没有“真逻辑”。它表现出的逻辑、推理是训练文本的统计规律而不是真正的逻辑所以有幻觉。所以大模型需要连接真实世界并对接真逻辑系统。这就需要用到“函数调用”。   函数调用(Function Calling)可以使LLM具有与外部API交互的能力。让用户能够使用高效的外部工具、与外部API进行交互。其使用机制如下 关于function calling,有以下几点需要注意 在最新版本的OpenAI API中可以使用tools参数对函数进行描述。并让大模型智能地选择输出包含函数参数的JSON对象来调用一个或多个函数。最新的GPT模型(gpt-3.5-turbo-0125 and gpt-4-turbo-preview)可以自动检测何时应该调用函数(还有一个相关的参数tool_choice一般不用自己设置)还可以输出更加符合函数签名的JSON串。GPT不负责调用和执行外部函数需要用户自己完成。 2 使用GPT进行函数调用 在使用GPT模型进行函数调用时需要用到tools参数进行函数声明关于该参数有以下几点需要说明 该参数可以接收一系列JSON组成的array一个函数对应一个JSON当前最多可以接受128个函数。JSON串的结构如下 其中parameters参数的写法要遵循JSON Schema格式具体可以参考https://blog.csdn.net/yeshang_lady/article/details/137146295 2.1 使用函数调用完成加法计算 大模型可以做加法是因为大模型记住了简单加法的统计规律但大模型无法保证每次都能得到正确的加法计算结果。这里我们使用函数调用来完成加法计算。具体代码如下 from openai import OpenAI from dotenv import load_dotenv,find_dotenv import json from math import *_load_dotenv(find_dotenv()) clientOpenAI()def get_completion(messages,modelgpt-3.5-turbo):responseclient.chat.completions.create(modelmodel,messagesmessages,temperature0.7,tools[{type:function,function:{name:sum,description:加法器,计算一组数的和,parameters:{type:object,properties:{numbers:{type:array,items:{type:number}}}}}}],)return response.choices[0].messageprompt计算这些数据的和:345,2313,89,632. messages[{role:system,content:你是一个数学家},{role:user,content:prompt} ] responseget_completion(messages) print(response) #GPT模型第一次的回复中有关于函数调用信息包括GPT生成的函数调用的参数所以这些信息需要返回给GPT模型。 messages.append(response) if response.tool_calls is not None:tool_callresponse.tool_calls[0]if tool_call.function.namesum:argsjson.loads(tool_call.function.arguments)resultsum(args[numbers])messages.append({tool_call_id:tool_call.id,role:tool,name:sum,content:str(result) })print(get_completion(messages).content)其结果如下 ChatCompletionMessage(contentNone, role‘assistant’, function_callNone, tool_calls[ChatCompletionMessageToolCall(id‘call_vYramfrhZX7kLZLYhqDiFVHP’, functionFunction(arguments‘{“numbers”:[345,2313,89,632]}’, name‘sum’), type‘function’)]) 这些数据的和是3379. 2.2 同时启动多个函数调用 借助上述加法函数的代码可以一次启动同一个函数的多次调用具体代码如下 from openai import OpenAI import json from dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) clientOpenAI() def run_conversation(prompt,modelgpt-3.5-turbo):messages[{role:user,content:prompt}]tools[{ type: function,function: {name: sum,description: 加法器计算一组数的和,parameters: {type: object,properties: {numbers: {type: array, items: { type: number}}}}}}]responseclient.chat.completions.create(modelmodel,messagesmessages,toolstools,tool_choiceauto,)response_messageresponse.choices[0].messagemessages.append(response_message)print(response_message)tool_callsresponse_message.tool_callsif tool_calls:for tool_call in tool_calls:function_nametool_call.function.namefunction_argsjson.loads(tool_call.function.arguments)function_responsesum(function_args.get(numbers))messages.append({tool_call_id:tool_call.id,role:tool,name:function_name,content:str(function_response)})second_responseclient.chat.completions.create(modelmodel,messagesmessages,)return second_response.choices[0].message.content if __name____main__:prompt小明第一天买了5本书2个苹果第二天买了3本书4个橘子第三天买了7个梨和10本书那么小明总共买了多个水果和多少本书print(prompt)print(GPT回复)print(run_conversation(prompt))其执行结果如下 小明第一天买了5本书2个苹果第二天买了3本书4个橘子第三天买了7个梨和10本书那么小明总共买了多个水果和多少本书 ChatCompletionMessage(contentNone, role‘assistant’, function_callNone, tool_calls[ChatCompletionMessageToolCall(id‘call_XB4SBFVfhMtyeo4zRu1lvpim’, functionFunction(arguments‘{“numbers”: [2, 4, 7]}’, name‘sum’), type‘function’), ChatCompletionMessageToolCall(id‘call_d0B4e1j7Fhi1OPxxH9skJRAi’, functionFunction(arguments‘{“numbers”: [5, 3, 10]}’, name‘sum’), type‘function’)]) GPT回复: 小明总共买了13个水果和18本书。 关于这段代码需要注意一点 这段代码中的模型使用的是gpt-3.5-turbo更确切的说是最新的gpt-3.5-turbo-0125。OpenAI官方已经将gpt-3.5-turbo指向了gpt-3.5-turbo-0125。但如果使用的是国内代理的key的话可能gpt-3.5-turbo和gpt-3.5-turbo-0125还是两个不同的模型那运行上述代码时可能会遇到如下错误(输出second_response可以看到报错信息) Invalid parameter: messages with role ‘tool’ must be a response to a preceeding message with ‘tool_calls’ 2.3 同时定义多个函数调用 假设我们现在同时定义了加法和乘法的函数调用让大模型自动完成加法和乘法的调用。具体代码如下 from openai import OpenAI import json from dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) clientOpenAI() def math_multiply(number,price):return number*price def run_conversation(prompt,modelgpt-3.5-turbo-0125):messages[{role:user,content:prompt}]tools[{ type: function,function: {name: sum,description: 加法器计算一组数的和,parameters: {type: object,properties: {numbers: {type: array, items: { type: number}}}}}},{type:function,function:{name:multiply,description:乘法器计算两个数的乘积,parameters:{type:object,properties:{price:{type:number,description:一种物品的价格},number:{type:integer,description:一种物品的数量},},required:[price,number],}}}]responseclient.chat.completions.create(modelmodel,messagesmessages,toolstools,tool_choiceauto,)response_messageresponse.choices[0].messageavailable_function{sum:sum,multiply:math_multiply,}while response_message.tool_calls:print(response_message)messages.append(response_message)tool_callsresponse_message.tool_callsfor tool_call in tool_calls:function_nametool_call.function.namefunction_argsjson.loads(tool_call.function.arguments)functionavailable_function[function_name]if functionsum:function_responsefunction(function_args.get(numbers))elif functionmath_multiply:function_responsefunction(function_args.get(number),function_args.get(price))messages.append({tool_call_id:tool_call.id,role:tool,name:function_name,content:str(function_response)})response_messageclient.chat.completions.create(modelmodel,messagesmessages,toolstools,).choices[0].messagereturn response_message.content if __name____main__:prompt小明第一天买了5本书和7个苹果第二天买了3本书和2个苹果第三天买了18本书和20个苹果每一本书的价格是65元/本每一个苹果的价格是7.5元/个那么小明总共花了多少钱print(prompt)print(GPT回复:,run_conversation(prompt))其执行结果如下(从输出内容可以知道大模型先调用了两次加法运算完成书籍数量和水果数量的计算接着调用两次乘法完成书本总价和水果总价的计算最后调用加法完成总成本的计算。) 小明第一天买了5本书和7个苹果第二天买了3本书和2个苹果第三天买了18本书和20个苹果每一本书的价格是65元/本每一个苹果的价格是7.5元/个那么小明总共花了多少钱 ChatCompletionMessage(contentNone, role‘assistant’, function_callNone, tool_calls[ChatCompletionMessageToolCall(id‘call_xkGwaSApyRoTXmsNFhrtNQci’, functionFunction(arguments‘{“numbers”: [5, 3, 18]}’, name‘sum’), type‘function’), ChatCompletionMessageToolCall(id‘call_DQEKyCWNJT2JysmqH25OGLRO’, functionFunction(arguments‘{“numbers”: [7, 2, 20]}’, name‘sum’), type‘function’), ChatCompletionMessageToolCall(id‘call_5VlzZ8U5EhDixYnbwhh2Lljf’, functionFunction(arguments‘{“price”: 65, “number”: 26}’, name‘multiply’), type‘function’), ChatCompletionMessageToolCall(id‘call_qN12sj2Ze7TvcuF0vzcwZH9H’, functionFunction(arguments‘{“price”: 7.5, “number”: 29}’, name‘multiply’), type‘function’)]) ChatCompletionMessage(contentNone, role‘assistant’, function_callNone, tool_calls[ChatCompletionMessageToolCall(id‘call_XIdn5N1lhcRy8vG0UodSMfO9’, functionFunction(arguments‘{“numbers”:[1690,217.5]}’, name‘sum’), type‘function’)]) GPT回复: 小明总共花了1907.5元。 最后需要注意一点是否执行函数调用由大模型自己决定。
http://www.dnsts.com.cn/news/155129.html

相关文章:

  • 怎么做贝店式的网站p2p网站开发价格
  • 大气dede织梦企业广告网络公司工作室网站模板源码阿里云 网站
  • 深圳龙岗做网站公司seo优化推广工程师招聘
  • 贵港公司做网站淘宝网站建设教程视频
  • 网站建设公司程序网站制作帐户设置
  • 优秀企业网站首页影视公司网站是做什么的
  • 互动科技 网站怎么用vps做网站
  • 虚拟主机网站建设过程免费ppt模板公众号
  • 网站建设 pdf教程wrix 网站开发
  • 注册公司网上申请入口网站营销型网站建设与推广
  • 免费网站建设方案企业网站不备案可以吗
  • 找人做网站价格技术支持广州网站建设
  • 京东云网站建设好看的官网源码
  • 优秀的网站建设托管wordpress登录sso
  • 自己做网站的流程视频做网站的软件dw下载
  • 网站手机pc同步网站建设与设计教程视频教程
  • 毕业设计做网站 如何做自己做网站 教程
  • wordpress主题上的字怎么移动seo专业培训学费多少钱
  • 织梦系统做的商城网站企业网站管理系统破解版
  • 衣柜推拉门图案设计网站做网站需要知道什么
  • 怎样修改静态公司网站页面电话合肥网站建设黄页
  • 河南省建设厅网站门户建筑公司企业资料
  • 深圳设计公司最多的地方在哪如何写一份网站优化建设的方案
  • 浏览器编程语言手机优化大师哪个好
  • 公司建设网站申请报告范文以前做的网站怎么才能登陆后台
  • 网站服务器有哪些类型建行卡如何网上签约
  • 旅游网站系统设计萍乡网站建设公司
  • cms建站是什么.net做网站的吗
  • 室内设计接单的网站网站开发实战演练
  • 在线制作软件天津网站优化公司哪家好