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

AIGC开发:调用openai的API接口实现简单机器人

简介

开始进行最简单的使用:通过API调用openai的模型能力
OpenAI的能力如下图:
在这里插入图片描述

文本生成模型

OpenAI 的文本生成模型(通常称为生成式预训练 Transformer 或大型语言模型)经过训练可以理解自然语言、代码和图像。这些模型提供文本输出来响应其输入。这些模型的输入也称为“提示”。设计提示本质上是如何“编程”大型语言模型,通常是通过提供说明或一些如何成功完成任务的示例。

Chat Completions API 聊天功能代码示例

聊天模型将消息列表作为输入,并返回模型生成的消息作为输出。尽管聊天格式旨在使多轮对话变得容易,但它对于没有任何对话的单轮任务也同样有用。

import os
from openai import OpenAI# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())# 配置 OpenAI 服务,需要获取API_KEY
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")
)response = client.chat.completions.create(messages=[{"role": "user","content": "hi,讲个笑话吧",}],model="gpt-3.5-turbo",
)print(response)

completions-api 补全功能代码示例

API于 2023 年 7 月收到最终更新,并且具有与新的聊天完成端点不同的界面。输入不是消息列表,而是称为提示的自由格式文本字符串。

import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv_ = load_dotenv((find_dotenv()))
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")
)def get_prompt(prompt, model="gpt-3.5-turbo-instruct", ):response = client.completions.create(model=model,prompt=prompt,temperature=0.9,max_tokens=20,stream=True)return responseif __name__ == "__main__":response = get_prompt("今天我不")for chunk in response:print(chunk.choices[0].text, end="")

Chat Completions vs. Completions

官网已说明停止更新Completions,推荐使用Chat Completions

简单机器人(感知上下文)

带入一些业务场景来使用,机器人最开始吸引我的就是上下文的联系,调用API的时候需要把之前的聊天内容保存并再次发过去,下面用一个简单示例演示下是如何进行处理的

import json
import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv_ = load_dotenv(find_dotenv())
client = OpenAI(# defaults to os.environ.get("OPENAI_API_KEY")api_key=os.getenv("OPENAI_API_KEY")
)# 定义消息历史。先加入 system 消息,里面放入对话内容以外的 prompt
messages = [{"role": "system","content": """
你是环保部门的客服代表,你叫小智。可以帮助用户选择最合适的地市环保政策。地市政策包括:
所属城市:天津市
政策类型:建设实施办法
政策概要:规定了生活垃圾分类收集设施的设计、施工、验收和交付使用要求,明确了配套设施与主体工程同时设计、同时施工、同时验收、同时交付使用的要求。
适用企业类型:各类建设主体。所属城市:上海市
政策类型:生态环境准入清单
政策概要:提出了鼓励、引导和禁止事项,明确了生态环境准入要求,规范了企业行为,强化了环保监管。
适用企业类型:上海市行政区域内的企业。所属城市:重庆市
政策类型:城市供水节水条例
政策概要:规范了城市供水、用水、节水等行为,保障城市生活、生产和其他用水需求,促进高质量发展、创造高品质生活。
适用企业类型:重庆市行政区域内的供水企业和用户。所属城市:马鞍山市
政策类型:建筑垃圾管理办法
政策概要:规定了建筑垃圾的排放、运输、消纳和处理等行为,加强了对建筑垃圾的管理和监督,促进环境保护和资源利用。
适用企业类型:马鞍山市行政区域内的建设单位、施工单位和建筑垃圾运输单位。注意使用 JSON 格式输出回答。
"""}
]def get_completion(prompt, model="gpt-3.5-turbo-1106"):# 把用户输入加入消息历史messages.append({"role": "user", "content": prompt})response = client.chat.completions.create(model=model,messages=messages,temperature=0,response_format={"type": "json_object"})msg = response.choices[0].message.content# 把模型生成的回复加入消息历史。很重要,否则下次调用模型时,模型不知道上下文messages.append({"role": "assistant", "content": msg})return msgif __name__ == "__main__":get_completion("有北京的政策吗?")get_completion("城市供水有哪些政策?")get_completion("这是哪个城市的政策?")print(messages)

返回结果

[{"role": "system","content": "\n你是环保部门的客服代表,你叫小智。可以帮助用户选择最合适的地市环保政策。地市政策包括:\n天津市\n政策类型:建设实施办法\n政策概要:规定了生活垃圾分类收集设施的设计、施工、验收和交付使用要求,明确了配套设施与主体工程同时设计、同时施工、同时验收、同时交付使用的要求。\n适用企业类型:各类建设主体。\n\n上海市\n政策类型:生态环境准入清单\n政策概要:提出了鼓励、引导和禁止事项,明确了生态环境准入要求,规范了企业行为,强化了环保监管。\n适用企业类型:上海市行政区域内的企业。\n\n重庆市\n政策类型:城市供水节水条例\n政策概要:规范了城市供水、用水、节水等行为,保障城市生活、生产和其他用水需求,促进高质量发展、创造高品质生活。\n适用企业类型:重庆市行政区域内的供水企业和用户。\n\n马鞍山市\n政策类型:建筑垃圾管理办法\n政策概要:规定了建筑垃圾的排放、运输、消纳和处理等行为,加强了对建筑垃圾的管理和监督,促进环境保护和资源利用。\n适用企业类型:马鞍山市行政区域内的建设单位、施工单位和建筑垃圾运输单位。\n"},{"role": "user","content": "有北京的政策吗?"},{"role": "assistant","content": "很抱歉,我没有北京市的政策信息。如果您需要了解北京市的环保政策,建议您直接咨询北京市环保部门或者相关政府部门,他们会提供最准确和最及时的信息。"},{"role": "user","content": "城市供水有哪些政策?"},{"role": "assistant","content": "城市供水的政策主要包括以下几个方面:\n\n1. 水资源管理政策:针对城市供水的水资源管理,包括水资源保护、水资源配置、水资源利用效率等方面的政策。\n\n2. 水质管理政策:针对城市供水的水质管理,包括水源地保护、水处理工艺、水质监测等方面的政策。\n\n3. 供水设施建设政策:针对城市供水设施的建设和维护,包括供水管网建设、水厂建设、水泵站建设等方面的政策。\n\n4. 供水价格管理政策:针对城市供水的价格管理,包括水价制定、水费收取、价格监管等方面的政策。\n\n5. 供水节水政策:针对城市供水的节水管理,包括水资源合理利用、水损失控制、水价激励等方面的政策。\n\n具体的城市供水政策会因地区而异,您可以咨询当地的环保部门或者供水公司,了解更详细的政策信息。"},{"role": "user","content": "这是哪个城市的政策?"},{"role": "assistant","content": "这是一个通用的描述,适用于各个城市的供水政策。不同城市的具体政策可能会有所不同,您可以咨询所在城市的环保部门或供水公司,获取更准确的信息。"}
]

相关文章:

AIGC开发:调用openai的API接口实现简单机器人

简介 开始进行最简单的使用:通过API调用openai的模型能力 OpenAI的能力如下图: 文本生成模型 OpenAI 的文本生成模型(通常称为生成式预训练 Transformer 或大型语言模型)经过训练可以理解自然语言、代码和图像。这些模型提供文…...

c基础(二)

指针: 含义:是一个值,一个值代表着一个内存地址,类似于存放路径 * 运算符 : 1 字符*表示指针 作用:通常跟在类型关键字的后面,表示指针指向的是什么类型的值 int * foo, * bar;声明指针后会…...

人工智能趋势报告解读:ai野蛮式生长的背后是机遇还是危机?

近期,Enterprise WordPress发布了生成式人工智能在营销中的应用程度的报告,这是一个人工智能迅猛发展的时代,目前人工智能已经广泛运用到内容创作等领域,可以预见的是人工智能及其扩展应用还将延伸到我们工作与生活中的方方面面。…...

三、C语言中的分支与循环—goto语句 (10) (完)

在C语言中,goto语句允许程序无条件地跳转到同一函数内的标记位置。这个标记位置通过一个标签和冒号(:)来标示。goto语句可以用于从深层嵌套的循环或条件语句中直接跳出,或者跳过某些代码执行。尽管goto语句在某些情况下可以使程序逻辑变得清晰&#xff0…...

RabbitMQ 常见问题

1. 如何保证消息顺序消费 在RabbitMQ中,消息最终会保存在队列中,在同一个队列中,消息是顺序的,保持先进先出的原则,这个由Rabbitmq保证。而不同队列中的消息,RabbitMQ 是无法保证其顺序性。顺序消费主要是…...

阶段二-Day10-日期类

日期类结构: 1.java.util.Date是日期类 2.DateFormat是日期格式类、SimpleDateFormat是日期格式类的子类 Timezone代表时区 3.Calendar是日历类,GregorianCalendar是日历的子类 一. 常用类-Date 1.1 Date构造方法 Date(long date) 使用给定的毫秒时间价值构建…...

多任务并行处理相关面试题

我自己面试时被问过两次多任务并行相关的问题: 假设现在有10个任务,要求同时处理,并且必须所有任务全部完成才返回结果 这个面试题的难点是: 既然要同时处理,那么肯定要用多线程。怎么设计多线程同时处理任务呢&…...

Shell脚本学习笔记

1. 写在前面 工作中,需要用到写一些shell脚本去完成一些简单的重复性工作, 于是就想系统的学习下shell脚本的相关知识, 本篇文章是学习shell脚本整理的学习笔记,内容参考主要来自C语言中文网, 学习过程中,…...

ROS-安装xacro

安装 运行下列命令进行安装,xxxxxx处更改为自己的版本 sudo apt-get install ros-xxxxxx-xacro运行 输入下列命令 roscd xacro如果没有报错,并且进入了xacro软件包的目录,则表示安装成功。 参考: [1]https://wenku.csdn.net/ans…...

为什么说 $mash 是 Solana 上最正统的铭文通证?

早在 2023 年的 11 月,包括 Solana、Avalanche、Polygon、Arbitrum、zkSync 等生态正在承接比特币铭文生态外溢的价值。当然,因铭文赛道过于火爆,当 Avalanche、BNB Chain 以及 Polygon 等链上 Gas 飙升至极值,Arbitrum、zkSync 等…...

安装elasticsearch、kibana、IK分词器、扩展IK词典

安装elasticsearch、kibana、IK分词器、扩展IK词典 后面还会安装kibana,这个会提供可视化界面方面学习。 需要注意的是elasticsearch和kibana版本一定要一样!!! 否则就像这样 elasticsearch 1、创建网络 因为我们还需要部署k…...

Spring中常见的BeanFactory后处理器

常见的BeanFacatory后处理器 先给出没有添加任何BeanFactory后处理器的测试代码 public class TestBeanFactoryPostProcessor {public static void main(String[] args) {GenericApplicationContext context new GenericApplicationContext();context.registerBean("co…...

FPGA LCD1602驱动代码 (已验证)

一.需求解读 1.需求 在液晶屏第一行显示“HELLO FPGA 1234!” 2. 知识背景 1602 液晶也叫 1602 字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵 型液晶模块。它由若干个 5X7 或者 5X11 等点阵字符位组成,每个点阵字符位都可以显示一 个字符,每位之间有一个点距的…...

c++编程要养成的好习惯

1、缩进 你说有缩进看的清楚还是没缩进看的清楚 2、i和i i运行起来和i更快 3、 n%20和n&1 不要再用n%20来判断n是不是偶数了&#xff0c;又慢又土&#xff0c;用n&10&#xff0c;如果n&10就说明n是偶数 同理&#xff0c;n&11说明n是奇数 4、*2和<<…...

后台管理项目的多数据源方案

引言 在互联网开发公司中&#xff0c;往往伴随着业务的快速迭代&#xff0c;程序员可能没有过多的时间去思考技术扩展的相关问题&#xff0c;长久下来导致技术过于单一。为此最近在学习互联网思维&#xff0c;从相对简单的功能开始做总结&#xff0c;比如非常常见的基础数据的…...

视频美颜SDK趋势畅想:未来发展方向与应用场景

当下&#xff0c;视频美颜SDK正不断演进&#xff0c;本文将深入探讨视频美颜SDK的发展趋势&#xff0c;探讨未来可能的方向和广泛的应用场景。 1.深度学习与视频美颜的融合 未来&#xff0c;我们可以期待看到更多基于深度学习算法的视频美颜SDK&#xff0c;为用户提供更高质量…...

C++ const 限定符的全面介绍

C const 限定符的全面介绍 1. const 修饰基本数据类型 定义 const 修饰的基本数据类型变量&#xff0c;值不可改变。 语法 const type variable value;特点 不可变性&#xff0c;增加代码可读性。 作用 定义不可修改的常量。 使用场景 全局常量、配置项。 注意事项…...

Vue 中的 ref 与 reactive:让你的应用更具响应性(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

华为云CCE-集群内访问-根据ip访问同个pod

华为云CCE-集群内访问-根据ip访问同个pod 问题描述&#xff1a;架构如下&#xff1a;解决方法&#xff1a; 问题描述&#xff1a; 使用service集群内访问时&#xff0c;由于启用了两个pod&#xff0c;导致请求轮询在两个pod之间&#xff0c;无法返回正确的结果。 架构如下&am…...

Kasada p.js (x-kpsdk-cd、x-kpsdk-ct、integrity)

提供x-kpsdk-cd的API服务 详细请私信~ 可试用~ V:zhzhsgg 一、简述 integrity是通过身份验证Kasada检测机器人流量后获得的一个检测结果&#xff08;数据完整性&#xff09; x-kpsdk-cd 是经过编码计算等等获得。当你得到正确的解决验证码值之后&#xff0c;解码会看到如下图…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...