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

python操作OpenAI教程

python操作OpenAI

pip install -U openai

代码:

from openai import OpenAI# 解决请求超时问题
import os
os.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"# 需要在实例化OpenAI对象时候,指定秘钥
client = OpenAI(api_key="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")completion = client.chat.completions.create(model="gpt-3.5-turbo",  # 指定使用的大模型是谁,gpt-3.5-turbo 是chatgpt3.5,messages=[  # 提示词,{"role": "system", "content": "你是一个老师."},  # 让chatgpt充当什么身份{"role": "user", "content": "编写一段歌颂元宵节的歌词"}, # 具体要chatgpt完成的操作了。# {"role": "assistant", "content": "在这元宵佳节临,灯火闪烁映星河。\n汇聚亲情团圆欢,共享团圆喜庆多。\n饮甜汤圆舒心意,挂灯花灯亮明朗。\n传统民俗传千古,文化传承爱不忘。\n元宵圆圆思亲亲,喜庆团圆共欢颜。"},  # 约束条件或基于什么条件]
)print(completion.choices[0].message)

使用langchain调用OpenAI

pip install -U langchain
pip install -U langchain-openai
# 解决请求超时问题
import os, openai
from langchain_openai import ChatOpenAIos.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"llm = ChatOpenAI(openai_api_key="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", # 从OpenAI官方申请秘钥[可以是用户秘钥,也可以是项目秘钥]model_name="gpt-3.5-turbo" # 默认是gpt-3.5-turbo
)response = llm.invoke("你是谁?") ## 通过 invoke 传入对话
print(response.content)response = llm.invoke("编写一段歌颂劳动节的歌词?")
print(response.content)

AI会话

安装模块如下:

pip install -U openai
pip install -U langchain-openai
pip install -U tiktoken # 可视化界面工具 gradio框架的核心模块

代码:

import os, openai, gradio as gr
from langchain_openai import OpenAI
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationSummaryBufferMemory# 解决请求超时问题
os.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"os.environ["OPENAI_API_KEY"] = "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"
openai.api_key = os.environ["OPENAI_API_KEY"]memory = ConversationSummaryBufferMemory(llm=ChatOpenAI(# openai_api_key="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", # 从OpenAI官方申请秘钥[可以是用户秘钥,也可以是项目秘钥]# model_name="gpt-3.5-turbo" # 默认是gpt-3.5-turbo),max_token_limit=2048
)conversation = ConversationChain(llm=OpenAI(# api_key="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",max_tokens=2048,temperature=0.5),memory=memory,
)"""基于记忆体实现对话的历史上下文管理"""
def chat(input, history=[]):history.append(input)response = conversation.predict(input=input)history.append(response)# history[::2] 切片语法,每隔两个元素提取一个元素,即提取出所有的输入,# history[1::2]表示从历史记录中每隔2个元素提取一个元素,即提取出所有的输出# zip函数把两个列表元素打包为元组的列表的方式responses = [(u, b) for u, b in zip(history[::2], history[1::2])]print("用户输入:", history[::2])print("AI回答:", history[1::2])print("上下文:", responses)return responses, history"""可视化界面中实现AI对话"""
with gr.Blocks(css="#chatbot{height:800px} .overflow-y-auto{height:800px}") as demo:chatbot = gr.Chatbot(elem_id="chatbot")state = gr.State([])with gr.Row():txt = gr.Textbox(show_label=False, placeholder="请输入你的问题.")txt.submit(chat, [txt, state], [chatbot, state])# 启动项目
demo.launch(share=True)

相关文章:

python操作OpenAI教程

python操作OpenAI pip install -U openai代码: from openai import OpenAI# 解决请求超时问题 import os os.environ["http_proxy"] "http://localhost:7890" os.environ["https_proxy"] "http://localhost:7890"# 需要…...

如何版本REST API:综合指南

目录 总则什么是REST API版本控制?为什么API版本控制很重要?如何对REST API进行版本控制 理解API契约评估需求选择版本控制策略沟通变化保持向后兼容性详细文档记录REST API版本控制最佳实践REST API版本控制常见问题:REST API版本控制总则 版本化REST API对于确保软件应用…...

Docker 环境下 Nginx 监控实战:使用 Prometheus 实现 Nginx 性能监控的完整部署指南

Docker 环境下 Nginx 监控实战:使用 Prometheus 实现 Nginx 性能监控的完整部署指南 文章目录 Docker 环境下 Nginx 监控实战:使用 Prometheus 实现 Nginx 性能监控的完整部署指南一 查看模块是否安装二 配置 status 访问端点三 Docker 部署 nginx-prome…...

网络安全-IPv4和IPv6的区别

1. 2409:8c20:6:1135:0:ff:b027:210d。 这是一个IPv6地址。IPv6(互联网协议版本6)是用于标识网络中的设备的一种协议,它可以提供比IPv4更大的地址空间。这个地址由八组十六进制数字组成,每组之间用冒号分隔。IPv6地址通常用于替代…...

【移动端】事件基础

一、移动端事件分类 移动端事件主要分为以下几类: 1. 触摸事件(Touch Events) 触摸事件是移动设备特有的事件,用来处理用户通过触摸屏幕进行的操作。主要的触摸事件有: touchstart:手指触摸屏幕时触发。…...

软件测试比赛-学习

一、环境配置 二、浏览器适配 //1.设置浏览器的位置,google浏览器位置是默认且固定在电脑里的//2.设置浏览器驱动的位置,C:\Users\27743\AppData\Local\Google\Chrome\ApplicationSystem.setProperty("webdriver.chrome.driver", "C:\\Users\\27743\\AppData\\…...

力扣LeetCode-链表中的循环与递归使用

标题做题的时候发现循环与递归的使用差别: 看两道题: 两道题都是不知道链表有多长,所以需要用到循环,用到循环就可以把整个过程分成多个循环体,就是每一次循环要执行的内容。 反转链表: 把null–>1…...

AFSim仿真系统 --- 系统简解_08 传感器与特征

传感器与特征 传感器是平台的一部分,为拥有该平台提供了探测其他平台及其组成部分的能力。 特征是平台的一种属性,用于确定特定传感器是否能够探测到特征所拥有的平台。 以下是用于探测平台的一些特征属性列表: 声学红外光学雷达 AFSIM …...

已经安装了qt,想添加mingw组件,包含gcc等

1、已经安装了qt,想添加mingw组件, 步骤1 双击打开MaintenanceTool.exe, 步骤2: 选择清华大学开源软件镜像网站,选择相应QT版本添加网址https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x8…...

数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎(一)(20241009)

数据库管理250期 2024-10-09 数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎(一)(20241009)1 简介2 引擎构成3 引擎架构4 文件分布5 分布式MVCC6 限制/要求总结 数据库管理-第250期 深入浅出多主多活数据库技术…...

信号用wire类型还是reg类型定义

wire类型就是一根线,线有两端,一端发生改变,经过线传递的信号当然也会发生改变,reg类型则不同,可以把reg类型理解为存储数据的寄存器,当满足一定条件时,数值才被激活发生改变。 那么&#xff0…...

与鸿蒙同行,Java Solon v3.0 正式发布(向下兼容)

与 HarmonyOS NEXT 10月8日公测同行。Solon (开放原子开源基金会,孵化项目) v3.0 正式发布, 且将在 2025 年启动华为编程语言 “仓颉” 版开发(届时会有 Solon-Java 和 Solon-CJ 两大版本)。本次大版本更新…...

数据驱动投资:AI在股票市场的应用

当ChatGPT首次亮相时,其卓越的语言处理能力立刻引起了许多行业的广泛关注,投资界也不例外。关于ChatGPT是否能应用于投资决策的问题,迅速成为热门讨论的焦点。 近期,加拿大多伦多大学和印度孟买理工学院的研究人员联合开展了一项…...

Tita使用小技巧:项目类型自定义,业务管理个性化

应用场景 某互联网企业,企业内部有研发部,有销售部 研发部通常需要管理各种技术研发类型项目,因此需要管理「研发型」项目,该类型项目需要明确「所属产品」、「级别管理:国家级/省市级」、「项目类别:创新…...

国药准字:您购药的可靠指南

益安宁丸为同溢堂药业有限公司所独家生产的一款中成药,在内地市场和港澳地区均有上市。 益安宁丸真品的唯一标准:无论港版还是内地版,包装盒必然有国药准字Z20063087标识,但凡没有国药准字标识的必为假药。...

Python类学习(2)——未完待续

函数和类的参数传递 实例方法 class House:# 类构造方法,也是实例方法def __init__(self, area, price):self.area areaself.price pricedef cls_func(self, arg):print(arg)my_house House(America, 330) # 实例化类对象,需要传入init中的两个参数 print(f…...

微前端框架 qiankun 全面解析到源码实现

微前端(Micro Frontends)是一种将大型前端应用拆分为多个独立模块的架构设计思想,旨在解决复杂应用开发与维护的难题。qiankun 是目前流行的微前端解决方案之一,基于 single-spa 进行封装,提供了一种简单且完整的微前端…...

初始化数据的正确方式?

关于这篇文章 https://proandroiddev.com/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62 pl的视频解读 当在viewmodel中需要进行数据的初始化的时候 viewmodel.initData() 放在哪里合适呢,大部分情况下可以放在 viewmodel的init{}模块&…...

Flutter平台嵌入器

When you build a Flutter app, it’s not just about the code you write in Dart and the Flutter framework. There’s also a crucial piece called the platform embedders that enable your Flutter app to run on different operating systems like Android, iOS, and s…...

微信小程序——婚礼邀请函

一、界面设计 首页: 精美的婚礼主题背景图,可能是新人的婚纱照或浪漫的插画。温馨的欢迎语,如 “欢迎参加我们的婚礼”。一个 “打开邀请函” 的按钮,引导用户进入邀请函详情页面。 邀请函详情页面: 顶部展示新人的照片…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...