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

网站开发一般过程/合肥网站seo费用

网站开发一般过程,合肥网站seo费用,曲周手机网站建设,wordpress安装演示不同文章目录 一. 介绍二. 常见用例与Function Calling调用逻辑三. 调用细节1. 调用行为:tool_choice2. 调用规定:functions 四. 实战:查询公司相关产品 一. 介绍 OpenAI可以根据用户的要求输出一个符合用户要求的入参值。然后用户拿到入参值之后…

文章目录

    • 一. 介绍
    • 二. 常见用例与Function Calling调用逻辑
    • 三. 调用细节
      • 1. 调用行为:tool_choice
      • 2. 调用规定:functions
    • 四. 实战:查询公司相关产品

一. 介绍

OpenAI可以根据用户的要求输出一个符合用户要求的入参值。然后用户拿到入参值之后,可以调用函数执行。那如何按照用户的要求,生成指定格式,并符合入参值逻辑?

可以使用Function Calling将自然语言转换为API调用或数据库查询

 

最新的模型(gpt-4o、gpt-4-turbo 和 gpt-3.5-turbo)已经训练成能够检测何时应该调用函数(取决于输入),并以比以前的模型更接近被调用函数的参数返回 JSON。

 
注意:

尽管具备了这种能力,但也伴随着潜在的风险。我们强烈建议在代表用户采取影响世界的行动之前,构建用户确认流程(发送电子邮件、在网上发布内容、进行购买等)。

 

二. 常见用例与Function Calling调用逻辑

函数调用可让您更可靠地从模型中获取结构化数据。例如,您可以:

  1. 创建调用外部 API 来回答问题的助手;
  2. 将自然语言转换为 API 调用 例如,将“谁是我的顶级客户?”转换为get_customers(min_revenue: int, created_before: string, limit: int)并调用您的内部 API。
  3. 从文本中提取结构化数据:例如定义一个名为的函数extract_data(name: string, birthday: string)等等。

 

函数调用的基本步骤顺序如下:

  1. 定义函数调用规范,调用openAI返回函数调用参数,以json的形式返回
  2. 解析返回的调用参数获取入参并调用函数;
  3. 将函数响应作为新消息附加到模型中,并让模型将结果总结回用户。

 

三. 调用细节

1. 调用行为:tool_choice

tool_choice的默认行为是"auto"。这让模型决定是否调用函数以及如果调用,要调用哪些函数。另外,如下提供了三种函数调用的行为:

  • 强制模型始终调用函数,可以设置tool_choice: "required"。然后,模型将选择要调用的函数。
  • 强制模型仅调用一个特定的函数,您可以设置tool_choice: {"type": "function", "function": {"name": "myfunction"}}
  • 要禁用函数调用并强制模型仅生成面向用户的消息,您可以设置tool_choice: "none"

 

如下调用行为,

  response = client.chat.completions.create(model="gpt-4o",messages=messages,tools=tools,tool_choice="auto",  # auto is default, but we'll be explicit)

 

2. 调用规定:functions

函数定义需要作为函数对象数组传递。下表列出了函数对象的详细信息。

字段名称类型描述
namestring(必填)函数名
descriptionstring函数描述
parametersobject函数所需的参数,这些参数将从JSON Schema格式进行描述

举个例子:如下规定了调用函数的细节,

  • 函数名是find_product,作用是从一个sql中查询产品,
  • 参数是:sql_query:字段类型:string,表示一个sql
  • 必须传递的参数是:sql_query

functions = [{"name": "find_product","description": "Get a list of products from a sql query","parameters": {"type": "object","properties": {"sql_query": {"type": "string","description": "A SQL query",}},"required": ["sql_query"],},}
]

 

四. 实战:查询公司相关产品

假设我们有一个包含公司产品相关信息的数据库,现要求查询少于2.00的top2的产品。

还是按照上面描述的调用逻辑来说明如下代码逻辑:

  1. 定义函数调用规范:functions,根据用户问题user_question,调用openAI返回生成的参数;
  2. 解析返回的调用参数:response_message,调用函数:find_product1,生成结果products;
  3. 将函数响应products作为新消息附加到模型中,让模型总结结果返回给用户:response
#
import jsonimport openai# 示例函数
def find_product1(sql_query):# 执行查询 todo:这里暂不对接数据库# 这里直接返回查询结果,如果结果不对,GPT会返回如下信息# 2. Pen - Color: Blue, Price: $2.99 (although the price is higher than 2.00,# it is still included as it is one of the top 2 products based on price)print('111' + sql_query)results = [{"name": "pen", "color": "blue", "price": 2.99},{"name": "pen", "color": "red", "price": 1.78},]return resultsfunctions = [{"name": "find_product","description": "Get a list of products from a sql query",# 要求传参格式,以及产生的sql放到哪里"parameters": {"type": "object","properties": {"sql_query": {"type": "string","description": "A SQL query",}},# 规定:必传的参数名"required": ["sql_query"],},}
]user_question = "I need the top 2 products where the price is less than 2.00"
messages = [{"role": "user", "content": user_question}]
# 使用函数定义调用ChatCompletion端点
response = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613", messages=messages,# 这里封装了名为functions的数组,这个数组中描述了要求openai产生一个查询语句,# 并规定了如何调用函数functions=functions
)
response_message = response["choices"][0]["message"]
print(response_message)
messages.append(response_message)# 从上轮对话中根据规定的格式,获取sql
function_args = json.loads(response_message["function_call"]["arguments"]
)
# 调用函数,返回结果添加到content中,
products = find_product1(function_args.get("sql_query"))# 将函数的响应附加到消息中
messages.append({"role": "function","name": "find_product","content": json.dumps(products),}
)
# 将函数的响应格式化为自然语言
response = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",messages=messages,
)print(response['choices'][0]['message']['content'])

 
看下调用效果:

如下是:函数规范+用户问题产生的结果。看到产生了一条sql,这个我们要传给定义好的外部(相对于openai)函数。


{"role": "assistant","content": null,"function_call": {"name": "find_product","arguments": "{\n  \"sql_query\": \"SELECT * FROM products WHERE price < 2.00 ORDER BY price LIMIT 2\"\n}"}
}

 

执行完定义好的外部(相对于openai)函数后,我们将结果发送给openai,让openai总结一下查询的情况,如下:


The top 2 products where the price is less than $2.00 are:
1. Pen (Blue) - Price: $1.99
2. Pen (Red) - Price: $1.78

 

这个简单的例子演示了如何利用函数来构建一个解决方案,使最终用户能够以自然语言与数据库(例子中未实现)进行交互。你可以使用函数定义将模型限制为按照你希望的方式进行回答,并将其响应集成到应用程序中。

 

我们也可以从文本中提取结构化数据,并通过调用外部工具来创建聊天机器人,而无须创建复杂的提示词以确保模型以特定的格式回答可以由代码解析的问题。

 

相关文章:

【chatGPT API】Function Calling:将自然语言转换为API调用或数据库查询

文章目录 一. 介绍二. 常见用例与Function Calling调用逻辑三. 调用细节1. 调用行为&#xff1a;tool_choice2. 调用规定&#xff1a;functions 四. 实战&#xff1a;查询公司相关产品 一. 介绍 OpenAI可以根据用户的要求输出一个符合用户要求的入参值。然后用户拿到入参值之后…...

Oracle Hint /*+APPEND*/插入性能总结

oracle append用法 Oracle中的APPEND用法主要用于提高数据插入的效率。 基本用法&#xff1a;在使用了APPEND选项后&#xff0c;插入数据会直接加到表的最后面&#xff0c;而不会在表的空闲块中插入数据。这种做法不需要寻找freelist中的free block&#xff0c;从而避免了在…...

正邦科技(day3)

出厂测试 设备校准 这个需要注意的是校准电流、电压、电感的时候有时候负感器会装反&#xff0c;mcu会坏&#xff0c;需要flash一下清空内存...

mac电脑多协议远程管理软件:Termius 8.4.0激活版下载

Termius 是一款功能强大的跨平台远程访问工具&#xff0c;可用于管理和连接各种远程系统和服务器。它支持SSH、Telnet、SFTP和Serial协议&#xff0c;并提供了键盘快捷键、自动完成和多标签功能&#xff0c;使用户可以方便地控制和操作远程主机。 Termius 提供了端到端的加密保…...

网络攻击的常见形式

开篇 本篇文章来自于《网络安全 ——技术与实践》的学习整理笔记。 正篇 口令窃取 相比于利用系统缺陷破坏网络系统&#xff0c;最容易的方法还是通过窃取用户的口令进入系统。因为人们倾向于选择很糟糕的口令作为登录密码&#xff0c;所以口令猜测很容易成功。通常&#xff0…...

ReactDOM 18版本 使用createRoot 替换render详解

概述 React 18 提供了两个 root API&#xff0c;被称之为 Legacy Root API 和 New Root API&#xff1a; Legacy Root API&#xff1a;是指之前版本的 root API ReactDOM.render&#xff0c;它将创建一个以 “legacy” 模式运行的 root&#xff0c;其工作方式与 React 17 完全…...

【赠书活动】好书推荐—《详解51种企业应用架构模式》

导读&#xff1a; 企业应用包括哪些&#xff1f;它们又分别有哪些架构模式&#xff1f;世界著名软件开发大师Martin Fowler给你答案。 01 什么是企业应用 我的职业生涯专注于企业应用&#xff0c;因此&#xff0c;这里所谈及的模式也都是关于企业应用的。&#xff08;企业应用…...

SpringBoot启动时使用外置yml文件

第一步&#xff1a;打包时排除yml文件 <build><resources><resource><!-- 排除的文件的路径 --><directory>src/main/resources</directory><excludes><!-- 排除的文件的名称 --><exclude>application-dev.yml</e…...

【开源三方库】Fuse.js:强大、轻巧、零依赖的模糊搜索库

1.简介 Fuse.js是一款功能强大且轻量级的JavaScript模糊搜索库&#xff0c;支持OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;操作系统&#xff0c;它具备模糊搜索和排序等功能。该库高性能、易于使用、高度可配置&#xff0c;支持多种数据类型和多语…...

vue从入门到精通(六):数据代理

一&#xff0c;什么是数据代理 通过一个对象代理对另一个对象中属性的操作 二&#xff0c;object.defineproperty方法 object.defineproperty方法可以对对象追加属性 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>object…...

【C++修行之道】类和对象(二)类的6个默认成员函数、构造函数、析构函数

目录 一、类的6个默认成员函数 二、构造函数 2.1 概念 2.2 特性 2.2.5 自动生成默认构造函数 不进行显示定义的隐患&#xff1a; 2.2.6 自动生成的构造函数意义何在&#xff1f; 两个栈实现一个队列 2.2.7 无参的构造函数和全缺省的构造函数都称为默认构造函数&#x…...

【LeetCode热题100总结】239. 滑动窗口最大值

题目描述 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7]…...

【YOLOv9改进[Conv]】使用YOLOv10的空间通道解耦下采样SCDown模块替换部分CONv的实践 + 含全部代码和详细修改内容

本文将使用YOLOv10的空间通道解耦下采样SCDown模块替换部分CONv的实践 ,文中含全部代码和详细修改内容。 目录 一 YOLOv10 1 空间通道解耦下采样 2 可视化...

简单小游戏制作

控制台基础设置 //隐藏光标 Console.CursorVisible false; //通过两个变量来存储舞台的大小 int w 50; int h 30; //设置舞台&#xff08;控制台&#xff09;的大小 Console.SetWindowSize(w, h); Console.SetBufferSize(w, h);多个场景 int nowSceneID 1; while (true) …...

Delphi

Delphi&#xff0c;是美国 Borland&#xff08;宝兰&#xff09;公司於 1995 年开发在 Windows 平台下的快速应用程式开发工具 (Rapid Application Development&#xff0c;简称 RAD)&#xff0c;它的前身是在 DOS 下的产品 Borland Turbo Pascal。&#xff08;非开源软件&…...

Linux的shell脚本中的比大小

如果要将 -le 换成相反的&#xff08;即“大于”&#xff09;&#xff0c;你应该使用 -gt&#xff08;greater than&#xff09;。 所以&#xff0c;-le 的相反比较是 -gt。 但如果你想要一个包含“大于”和“不等于”的比较&#xff08;即“大于”&#xff09;&#xff0c;那…...

每日复盘-20240603

20240603 六日涨幅最大: ------1--------300637--------- 扬帆新材 五日涨幅最大: ------1--------300637--------- 扬帆新材 四日涨幅最大: ------1--------301306--------- 西测测试 三日涨幅最大: ------1--------301306--------- 西测测试 二日涨幅最大: ------1--------30…...

adb server version (22000) doesn‘t match this client (41); killing...

参考链接: adb server version (31) doesn’t match this client (41); killing… 解决此问题 电脑安装了360手机助手占用了adb的端口引起的。因为套接字的唯一性&#xff08;一个套接字只能由 协议/网络地址/端口号 唯一确定 &#xff09;&#xff0c;一个电脑只能有一个程序…...

如何使用 Connector API 将数据提取到 Elasticsearch Serverless 中

作者&#xff1a;来自 Elastic Jedr Blaszyk Elasticsearch 支持一系列摄取方法。 其中之一是 Elastic Connectors&#xff0c;它将 SQL 数据库或 SharePoint Online 等外部数据源与 Elasticsearch 索引同步。 连接器对于在现有数据之上构建强大的搜索体验特别有用。 例如&…...

体育赛事直播系统开发源码搭建

随着体育产业的蓬勃发展&#xff0c;体育赛事直播已成为广大观众获取赛事信息的重要途径。为了满足观众日益增长的需求&#xff0c;开发一套专业的体育赛事直播系统成为当务之急。本文将围绕体育赛事直播系统开发源码搭建进行深入探讨&#xff0c;从技术选型、系统架构、安全防…...

使用Jmeter进行性能测试

学习视频 B站UP主&#xff1a;白月黑羽编程 目录 Jmeter的下载 Jmeter界面 Jmeter操作 线程组与HTTP请求 测试一个请求 解决响应数据中 中文乱码的问题 HTTP请求默认值 录制网站流量 添加录制控制器 添加HTTP代理服务器 在浏览器配置代理 进行录制 模拟间隔时间 …...

AI技术的发展,会让你工作轻松吗

这两年&#xff0c;人工智能技术迅猛发展&#xff0c;AI产品层出不穷&#xff0c;尤其大语言模型&#xff08;LLM&#xff09;的爆火&#xff0c;许多人担心自己的工作会被AI取代。然而&#xff0c;如果AI技术发展到极致&#xff0c;再加上其他科学技术的高度发展&#xff0c;我…...

Spring-DI入门案例

黑马程序员SSM框架教程 文章目录 一、DI入门案例思路分析二、实现步骤2.1 删除service中使用new形式创建的Dao对象2.2 提供以来对象对应的setter方法2.3 配置service与到之间的关系 一、DI入门案例思路分析 基于IoC管理bean&#xff08;上个案例已经实现&#xff09;service中…...

ubuntu18.04 报错:fatal error: execution

一、问题描述 在ubuntu18.04上编译Faster-lio 报错&#xff1a; fatal error: execution: 没有那个文件或目录#include <execution> 二、解决方法 需要将g编译器更新到9.0 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install g…...

开源大模型与大模型api的使用优缺点

开源大模型和大模型 API 都是人工智能领域中的重要概念&#xff0c;它们各自有一些优缺点。 开源大模型&#xff1a; 优点&#xff1a; 免费使用&#xff1a; 大多数开源大模型是免费提供的&#xff0c;任何人都可以访问和使用这些模型&#xff0c;降低了使用门槛。可定制性…...

小红书前端2轮面试期望22K,全程问低代码设计

一面&#xff08;通过&#xff09; 1、好&#xff0c;那我们开始把&#xff0c;先简单介绍一下自己的一个经历&#xff0c;以及自己有亮点的项目&#xff1f;balabala 2、你可以这样介绍&#xff1a;在这里边主要负责哪几个项目&#xff0c;哪些项目是比较有亮点的&#xff0…...

HIK录像机GB28181对接相机不在线问题随笔

一、问题现象 【设备信息】型号&#xff1a;DS-8664N-I16-V3 V4.63.000 build 230412 【问题现象】HIK录像机使用GB28181对接异常相机无法正常上线&#xff0c;对接HIK相机可以正常上线。 【现场拓扑】现场拓扑如下 NVR侧使用固定公网IP地址。IPC侧使用家用宽带的方式&…...

stm32-DMA转运数据

在配置前要记得先定义一下DMA转运的源端数组和目标数组两个数组哦。 接下来我们就开始准备配置吧 配置 初始化 1.RCC开启时钟&#xff08;开启DMA的时钟&#xff09; void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState) 作用&#xff1a;开启时…...

Java编程常见问题汇总一

系列文章目录 文章目录 系列文章目录前言一、字符串连接误用二、错误的使用StringBuffer三、测试字符串相等性四、数字转换成字符串五、利用不可变对象(Immutable) 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分…...

用Unityhub安装unity2018.3.0和vuforia

打开下载网址 https://unity.cn/releases/full/2018 选择2018.3.x 找到2018.3.0后&#xff0c;点击从UnityHub下载 然后unityhub会弹出安装界面 只勾选这两个&#xff0c;其余的全部取消勾选&#xff0c;默认勾选上的也取消掉&#xff0c;然后点击安装...