ChatGPT 最佳实践指南之:使用外部工具

news2024/11/15 23:33:26

Use external tools

使用外部工具

Compensate for the weaknesses of GPTs by feeding them the outputs of other tools. For example, a text retrieval system can tell GPTs about relevant documents. A code execution engine can help GPTs do math and run code. If a task can be done more reliably or efficiently by a tool rather than by a GPT, offload it to get the best of both.

通过向 GPT 提供其他工具的输出来弥补 GPT 的弱点。例如,文本检索系统可以告诉 GPT 相关文档的信息,代码执行引擎可以帮助 GPT 进行数学计算和运行代码。如果一个任务可以通过工具而不是GPT更可靠或更高效地完成,那么可以将其转移,以充分发挥两者的优势。

Tactic: Use embeddings-based search to implement efficient knowledge retrieval

技巧:使用基于嵌入的搜索实现高效的知识检索

A model can leverage external sources of information if provided as part of its input. This can help the model to generate more informed and up-to-date responses. For example, if a user asks a question about a specific movie, it may be useful to add high quality information about the movie (e.g. actors, director, etc…) to the model’s input. Embeddings can be used to implement efficient knowledge retrieval, so that relevant information can be added to the model input dynamically at run-time.

如果模型的输入中包含外部信息,模型可以利用外部信息源,这可以帮助模型生成更具见解和最新的回答。例如,如果用户询问有关特定电影的问题,将关于电影的高质量信息(例如演员、导演等)添加到模型的输入中可能会很有用。可以使用嵌入来实现高效的知识检索,以便在运行时动态地将相关信息添加到模型输入中。

A text embedding is a vector that can measure the relatedness between text strings. Similar or relevant strings will be closer together than unrelated strings. This fact, along with the existence of fast vector search algorithms means that embeddings can be used to implement efficient knowledge retrieval. In particular, a text corpus can be split up into chunks, and each chunk can be embedded and stored. Then a given query can be embedded and vector search can be performed to find the embedded chunks of text from the corpus that are most related to the query (i.e. closest together in the embedding space).

文本嵌入是一种可以衡量文本字符串相关性的向量,相似或相关的字符串比不相关的字符串更接近。这个事实以及快速向量搜索算法的存在意味着嵌入可以用来实现高效的知识检索。特别是,可以将文本语料库分成多个块,对每个块进行嵌入和存储。然后可以对给定的查询进行嵌入,并进行向量搜索,以找到与查询最相关的文本块(即,在嵌入空间中最接近的文本块)。

Example implementations can be found in the OpenAI Cookbook. See the tactic “Instruct the model to use retrieved knowledge to answer queries” for an example of how to use knowledge retrieval to minimize the likelihood that a model will make up incorrect facts.

在 OpenAI Cookbook 中可以找到示例实现。有关如何使用知识检索来减少模型编造错误事实的示例,请参阅技巧文章“指导模型使用检索到的知识来回答查询”。

Tactic: Use code execution to perform more accurate calculations or call external APIs

技巧:使用代码执行进行更准确的计算或调用外部API

GPTs cannot be relied upon to perform arithmetic or long calculations accurately on their own. In cases where this is needed, a model can be instructed to write and run code instead of making its own calculations. In particular, a model can be instructed to put code that is meant to be run into a designated format such as triple backtics. After an output is produced, the code can be extracted and run. Finally, if necessary, the output from the code execution engine (i.e. Python interpreter) can be provided as an input to the model for the next query.

GPT 模型本身无法可靠地进行算术或长时间的计算。在需要这样做的情况下,可以指示模型编写并运行代码,而不是进行自己的计算。特别是,可以指示模型将需要运行的代码放入指定的格式中,例如三个反引号。生成输出后,可以提取和运行代码。最后,如果需要,可以将代码执行引擎(比如 Python 解释器)的输出作为下一个查询的模型输入。

SYSTEM

系统

You can write and execute Python code by enclosing it in triple backticks, e.g. ```code goes here```. Use this to perform calculations.

您可以通过将其放在三个反引号中来编写和执行Python代码,例如code goes here。使用它来执行计算。

USER

用户

Find all real-valued roots of the following polynomial: 3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10.

找出以下多项式的所有实根:3x**5 - 5x4 - 3*x3 - 7*x - 10。

Another good use case for code execution is calling external APIs. If a model is instructed in the proper use of an API, it can write code that makes use of it. A model can be instructed in how to use an API by providing it with documentation and/or code samples showing how to use the API.

另一个使用代码执行的好用例是调用外部 API。如果正确指导模型使用 API,它可以编写使用 API 的代码。可以通过为模型提供文档和代码示例来指导模型如何使用 API。

SYSTEM

系统

You can write and execute Python code by enclosing it in triple backticks. Also note that you have access to the following module to help users send messages to their friends:

您可以通过将其放在三个反引号中来编写和执行Python代码。还要注意,您可以使用以下模块来帮助用户向他们的朋友发送消息:

```python

import message

message.write(to="John", message="Hey, want to meetup after work?")```

WARNING: Executing code produced by a model is not inherently safe and precautions should be taken in any application that seeks to do this. In particular, a sandboxed code execution environment is needed to limit the harm that untrusted code could cause.

警告:执行模型生成的代码本质上是不安全的,因此在试图执行此操作的任何应用程序中应采取预防措施。特别是,需要使用沙盒式代码执行环境来限制不受信任的代码可能造成的伤害。

Tactic: Give the model access to specific functions

技巧:为模型提供特定函数的访问权限

The Chat Completions API allows passing a list of function descriptions in requests. This enables models to generate function arguments according to the provided schemas. Generated function arguments are returned by the API in JSON format and can be used to execute function calls. Output provided by function calls can then be fed back into a model in the following request to close the loop. This is the recommended way of using GPT models to call external functions. To learn more see the function calling section in our introductory GPT guide and more function calling examples in the OpenAI Cookbook.

Chat Completions API 允许在请求中传递函数描述列表,这使得模型可以根据提供的模式生成函数参数。API 以 JSON 格式返回生成的函数参数,并可用于执行函数调用。然后,函数调用提供的输出可以作为下一个请求的模型输入,以完成循环。这是使用 GPT 模型调用外部函数的推荐方法。要了解更多信息,请参阅我们的入门指南中的函数调用部分以及 OpenAI Cookbook 中的更多函数调用示例。

a607490a808071c7b48433964b2f8aea.jpeg

“点赞有美意,赞赏是鼓励”

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

45、Spring Boot自动配置原理

Spring Boot自动配置原理 lmport Configuration Spring spi 自动配置类由各个starter提供,使用Configuration Bean定义配置类,放到META-INF/spring.factories下使用Spring spi扫描META-INF/spring.factories下的配置类使用lmport导入自动配置类

通讯录管理系统--进阶(动态开辟内存+保存数据到文件)

文章目录 动态开辟内存优化改进通讯录类型改进初始化通讯录函数改进添加联系人的函数增加销毁通讯录信息的函数 保存数据到文件优化保存通讯录数据到文件读取数据到通讯录 完整的代码展示 在 C语言实现通讯录的所有基本功能详细代码分析中,我们已经实现了通讯录的基…

Linux系统编程:文件系统和inode

目录 一. 磁盘的结构和读写数据的方式 1.1 磁盘级文件和内存级文件 1.2 磁盘的物理结构 1.3 访问磁盘数据的方式 二. 磁盘文件系统 2.1 磁盘的分区管理方法 2.2 文件名和inode的关系 三. 结合文件系统对文件创建和删除的相关问题的理解 3.1 文件创建时操作系统进行的工…

如何给合宙ESP32-C3刷写arduino固件,arduinoIDE的配置,测试代码

视频教程 https://github.com/Yu-1120/ESP32-C3 资料下载地址 合宙ESP32-C3刷写arduino固件 然后点击安装就可以了 arduino-IDE的配置 我用的版本:2.1.1(版本不对也多大没关系) 下载安装 选择 ESP32C3 Dev Module 安装环境 配置环境&am…

二十六、传输层协议(下)

一、滑动窗口 刚才我们讨论了确认应答策略,对每一个发送的数据段,都要给一个ACK确认应答. 收到ACK后再发送下一个数据段。这样做有一个比较大的缺点, 就是性能较差. 尤其是数据往返的时间较长的时候. 既然这样一发一收的方式性能较低, 那么我们一次发送…

snpEff注释结果解读

目录 1.帮助文档 1.1 常用参数 2. 命令的用法: 3. 结果文件解读 4. SNP下游的分析 利用snpEff软件对 snp.vcf (利用gatk软件calling-snp)进行注释,运行下述命令: ## 构建好物种的数据库 java -jar /opt/snpEff/s…

基于Spring Boot的扶贫助农商城系统设计与实现(Java+spring boot+MySQL+VUE)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的扶贫助农商城系统设计与实现(Javaspring bootMySQLVUE) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spr…

QTranslator语言转换

//appname的格式 例如通常为(QQ为应用的名称) QQ_en.ts或QQ_zh_CN.ts QString qmName"zh_CN"; QTranslator trans ; QString qm QString(":/translatoin/qt/appname_%1.qm").arg(qmName); auto ret trans.load(qm); Q_UNUSED(ret)…

CSS高级特性

1.CSS复合选择器 CSS复合选择器:复合选择器是由两个或多个基础选择器通过不同的方式组合而成的 1.1 标签指定式选择器:又称交集选择器,由两个选择器构成,其中第一个选择器为标记选择器,第二个为class选择器或id选择器…

【Spring core学习一】简单认识Spring是什么?

目录 1、为什么要学习Spring? 2、Spring是什么? 1、IoC是什么? 2、进一步通过代码演示理解IoC 3、怎么理解容器? 4、知道DI与IoC的区别? 1、为什么要学习Spring? 我们常说的Spring 指的是 Spring Fra…

地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机

地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机 引脚对照表点亮RGB小灯安装旭日X3派WiringPi使用WiringPi点亮RGB小灯使用软件PWM功能 官方用户手册中只有python控制教程,没有c语言控制教程。且官方的教程中并没有软件pwm功能。本教程在开发…

Linux——动静态库的制作和使用(实操+代码+原理介绍)

动静态库的制作和使用 1️⃣.动静态库介绍🏀静态库⚽️动态库🏈区别🏐使用动态库的优点包括:🏉 使用静态库的优点包括: 2️⃣静态库的制作🍊Q:库文件能不能有main()函数?&#x1f34…

imazing是什么软件?2023年imazing官网中文版下载

最近很小伙们,咨询兔八哥,imazing是什么软件?,今天兔八哥爱分享整理一下imazing到底是什么软件?好用吗? imazing是一款iOS设备管理软件,借助 iMazing 的独有 iOS 备份技术(无线、隐私和自动&am…

地震正演基础知识

文章目录 地震正演1. 地震正演基础知识1.1 地震波1.2 波动方程1.3 有限差分方法1.4 边界条件1.5 记录数据 2. 公式2.1 泰勒级数回顾2.2 二维声波方程(连续的偏微分方程)2.2.1 二维声波方程(连续的偏微分方程)2.2.2 离散化二维声波…

【C++】vector模拟实现

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

Netty 为什么有如此高的性能?

文章首发地址 Netty高性能的三个主题 I/O传输模型:用什么样的通道将数据发送给对方,是BIO、NIO还是AIO,I/O传输模型在很大程度上决定了框架的性能。数据协议:采用什么样的通信协议,是HTTP还是内部私有协议。协议的选…

1767_Perl中的全词匹配

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) 当我在上一家公司工作的时候遇到过一个问题,为了解决软件接口的冲突我们需要把一个软件工程中的所有变量全都修改加一个前缀。我觉得用Perl处理是一个很好的注意&…

数据库作业3

1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 4.从student表中查询计算机系和英语系的学生的信息 5.从student表…

pytest 通过conftest.py获取测试所有执行case断言失败的结果

conftest.py import pytest from datetime import datetimedef pytest_exception_interact(node, call, report):if report.failed:with open("error.log", "a", encoding"utf-8") as f:test_case f"测试文件:{node.nodeid} |…

备战CAIP——PTA甲级刷题

目录 引入2023年 真题1001 AB Format (20 分) 小数字相加再格式化输出1002 AB for Polynomials (25 分) 多项式相加1003 Emergency 救援最短路径和最大救援部队 引入 2023睿抗 RoboCom机器人开发者大赛CAIP编程设计赛道编程技能赛 考察知识点 https://mp.weixin.qq.com/s/lXp5…