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语句在某些情况下可以使程序逻辑变得清晰࿰…...
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是不是偶数了,又慢又土,用n&10,如果n&10就说明n是偶数 同理,n&11说明n是奇数 4、*2和<<…...
后台管理项目的多数据源方案
引言 在互联网开发公司中,往往伴随着业务的快速迭代,程序员可能没有过多的时间去思考技术扩展的相关问题,长久下来导致技术过于单一。为此最近在学习互联网思维,从相对简单的功能开始做总结,比如非常常见的基础数据的…...

视频美颜SDK趋势畅想:未来发展方向与应用场景
当下,视频美颜SDK正不断演进,本文将深入探讨视频美颜SDK的发展趋势,探讨未来可能的方向和广泛的应用场景。 1.深度学习与视频美颜的融合 未来,我们可以期待看到更多基于深度学习算法的视频美颜SDK,为用户提供更高质量…...
C++ const 限定符的全面介绍
C const 限定符的全面介绍 1. const 修饰基本数据类型 定义 const 修饰的基本数据类型变量,值不可改变。 语法 const type variable value;特点 不可变性,增加代码可读性。 作用 定义不可修改的常量。 使用场景 全局常量、配置项。 注意事项…...

Vue 中的 ref 与 reactive:让你的应用更具响应性(上)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

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

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

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...