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

编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解

编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解

      • 1. 导入库
      • 2. 设置环境变量
      • 3. 打印环境变量
      • 4. 配置 OpenAI API
      • 5. 打印 API 配置
      • 6. 定义对话消息
      • 7. 调用 OpenAI API
      • 8. 打印 API 响应
      • 9. 提取并打印生成的回复
      • 10. 代码总结
      • 11. 注意事项
      • 12. 完整代码示例
      • 13. 输出示例

import openai
import osos.environ["OPENAI_API_KEY"] = "sk-xxx"
os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.api_base = os.getenv("OPENAI_API_BASE")
print(openai.api_key)
print(openai.api_base)
message = [{"role": "system", "content": "How are you today?"}]
res = openai.ChatCompletion.create(model="gpt-4-1106-preview", messages=message, stream=False,)
print(res)
print(res.choices[0].message["content"]) 详细解释
  • 这段代码使用 OpenAI 的 Python 库调用 GPT-4 模型生成对话回复。以下是详细解释:


    1. 导入库

    import openai
    import os
    
    • openai:OpenAI 官方库,用于调用 OpenAI API。
    • os:用于访问和操作环境变量。

    2. 设置环境变量

    os.environ["OPENAI_API_KEY"] = "sk-xxx"
    os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
    
    • os.environ:用于设置环境变量。
      • OPENAI_API_KEY:OpenAI API 的密钥,用于身份验证。
      • OPENAI_API_BASE:OpenAI API 的基础 URL,可以自定义为代理地址。

    3. 打印环境变量

    print(os.environ)
    
    • 打印当前进程的所有环境变量,确认 OPENAI_API_KEYOPENAI_API_BASE 已正确设置。

    4. 配置 OpenAI API

    openai.api_key = os.getenv("OPENAI_API_KEY")
    openai.api_base = os.getenv("OPENAI_API_BASE")
    
    • os.getenv:从环境变量中获取值。
      • openai.api_key:设置 OpenAI API 的密钥。
      • openai.api_base:设置 OpenAI API 的基础 URL。

    5. 打印 API 配置

    print(openai.api_key)
    print(openai.api_base)
    
    • 打印 openai.api_keyopenai.api_base,确认配置正确。

    6. 定义对话消息

    message = [{"role": "system", "content": "How are you today?"}]
    
    • message:一个包含对话消息的列表,每个消息是一个字典。
      • role:消息的角色,system 表示系统消息。
      • content:消息内容。

    7. 调用 OpenAI API

    res = openai.ChatCompletion.create(model="gpt-4-1106-preview",messages=message,stream=False,
    )
    
    • openai.ChatCompletion.create:调用 OpenAI 的对话生成 API。
      • model:指定使用的模型,这里是 GPT-4 的预览版。
      • messages:输入的消息列表。
      • stream:是否启用流式输出,False 表示一次性返回完整结果。

    8. 打印 API 响应

    print(res)
    
    • 打印完整的 API 响应,包含模型生成的回复及其他元数据。

    9. 提取并打印生成的回复

    print(res.choices[0].message["content"])
    
    • res.choices:API 返回的生成结果列表。
      • res.choices[0]:第一个生成结果。
      • res.choices[0].message["content"]:提取生成的消息内容并打印。

    10. 代码总结

    • 设置环境变量 OPENAI_API_KEYOPENAI_API_BASE
    • 配置 OpenAI API 的密钥和基础 URL。
    • 定义对话消息并调用 GPT-4 模型生成回复。
    • 打印生成的回复内容。

    11. 注意事项

    1. API 密钥安全性

      • 不要将 API 密钥硬编码在代码中,建议通过环境变量或配置文件加载。

      • 示例:

        export OPENAI_API_KEY="sk-xxx"
        export OPENAI_API_BASE="https://ai.com/v1"
        

        然后在代码中使用 os.getenv 获取。

    2. 模型选择

      • gpt-4-1106-preview 是 GPT-4 的预览版,可能需要特定权限才能访问。
      • 如果无法访问,可以替换为 gpt-3.5-turbo
    3. 错误处理

      • 调用 API 时可能会因网络问题或配额不足失败,建议添加错误处理:

        try:res = openai.ChatCompletion.create(model="gpt-4-1106-preview",messages=message,stream=False,)
        except Exception as e:print(f"An error occurred: {e}")
        
    4. 流式输出:

      • 如果启用 stream=True,API 会以流式方式返回结果,适用于实时交互场景。

    12. 完整代码示例

    import openai
    import os# 设置环境变量
    os.environ["OPENAI_API_KEY"] = "sk-xxx"
    os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"# 打印环境变量
    print(os.environ)# 配置 OpenAI API
    openai.api_key = os.getenv("OPENAI_API_KEY")
    openai.api_base = os.getenv("OPENAI_API_BASE")# 打印 API 配置
    print(openai.api_key)
    print(openai.api_base)# 定义对话消息
    message = [{"role": "system", "content": "How are you today?"}]# 调用 OpenAI API
    try:res = openai.ChatCompletion.create(model="gpt-4-1106-preview",messages=message,stream=False,)# 打印 API 响应print(res)# 提取并打印生成的回复print(res.choices[0].message["content"])
    except Exception as e:print(f"An error occurred: {e}")
    

    13. 输出示例

    假设 API 调用成功,输出可能如下:

    {'OPENAI_API_KEY': 'sk-xxx', 'OPENAI_API_BASE': 'https://ai.com/v1', ...}
    sk-xxx
    https://ai.com/v1
    {"id": "chatcmpl-12345","object": "chat.completion","created": 1677652288,"model": "gpt-4-1106-preview","choices": [{"index": 0,"message": {"role": "assistant","content": "I'm just a computer program, so I don't have feelings, but I'm here to help you!"},"finish_reason": "stop"}]
    }
    I'm just a computer program, so I don't have feelings or experiences, but I'm here and ready to assist you 
    with any questions or tasks you have. How can I help you today?
    

    通过以上步骤,你可以成功调用 OpenAI API 并生成对话回复。

相关文章:

编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解

编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解 1. 导入库2. 设置环境变量3. 打印环境变量4. 配置 OpenAI API5. 打印 API 配置6. 定义对话消息7. 调用 OpenAI API8. 打印 API 响应9. 提取并打印生成的回复10. 代码总结11. 注意事项12. 完整代码示…...

计算机的物理组成——微机的物理结构

对于用户和维修人员来说,最重要的是微机实际物理结构,即组成微机的各个部件,通俗来说,他由主机、键盘、鼠标、显示器等部分组成。(在 计算机基础知识——微机系统 中已经介绍了微机的主机部分) PC 系列微机…...

STM32 RS232通信开发全解析 | 零基础入门STM32第五十九步

主题内容教学目的/扩展视频RS232串口电路原理,跳线设置,驱动程序。与超级终端通信。了解电路原理和RS232协议。 师从洋桃电子,杜洋老师 📑文章目录 一、RS232通信系统架构二、RS232核心原理与硬件设计2.1 电气特性对比2.2 典型电路…...

C# net deepseek RAG AI开发 全流程 介绍

deepseek本地部署教程及net开发对接 步骤详解:安装教程及net开发对接全流程介绍 DeepSeekRAG 中的 RAG,全称是 Retrieval-Augmented Generation(检索增强生成),是一种结合外部知识库检索与大模型生成能力的技术架构。其…...

建筑管理(2): 施工承包模式,工程监理,质量监督

文章目录 一. 施工承包模式1. 施工总承包模式1.1 施工总承包的特点1.2 施工总承包模式中的承包方 2. 平行承包模式3. 联合体与合作体承包模式 二. 工程监理1. 强制实行监理的工程范围1.1 国家重点建设工程1.2 大中型公用事业工程(重点)1.3 成片开发建设的住宅小区工程1.4 必须实…...

最节省服务器,手搓电子证书查询系统

用户预算150元,想要一个最简单证书查询系统。前台能查询证书、后台管理员能登录能修改密码,证书能够手动输入修改删除、批量导入导出删除数据、查询搜索。能够兼容苹果、安卓、PC三端浏览器,最后帮忙部署到云服务器上。 用户预算不多&#xf…...

Go string 字符串底层逻辑

在 Go 语言中,string 类型的底层结构是一个结构体,包含两个字段:一个指向字节数组的指针和该字节数组的长度。以下是其在 Go 源码中的大致定义:type stringStruct struct {str unsafe.Pointerlen int } str:这是一个指…...

STM32F407 IIC通信

1、IIC 介绍 IIC(Inter-Integrated Circuit)总线是一种由数据线 SDA 和时钟线 SCL 构成的两线式串行总线,可发送和接收数据,常用于 MPU/MCU 与外部设备连接通信、数据传输。每个连接到总线的设备都有一个独立的地址,主机可以通过该地址来访问不同设备。因为 IIC 协议比较简单…...

【论文阅读方法】沐神课程:如何读论文

一篇论文的一般结构 titleabstractintroductionmethodexperienceconclusion 三明治论文阅读法 第一遍:海选 titleabstractconclusion——确定要不要读第二遍:精读 对整个文章过一遍,知道每一块在做什么 可以从标题开始读到最后,注…...

机器人基础知识

在机器人学中,“inverse dynamics”(逆动力学)和 “forward dynamics”(正向动力学)是两个核心概念,它们帮助我们理解和计算机器人如何移动以及需要应用什么样的力来实现这些移动。 Inverse Dynamics&#…...

jupyter无法转换为PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

无法转为PDF 手动下载工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一样,还有新的报错 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意儿 sudo apt-get install texlive-xetex texlive-fon…...

Python高级算法与数据结构优化实战

Python高级算法与数据结构优化实战 在算法竞赛中,掌握高级优化技巧和数据结构实现可以显著提升解题效率和代码性能。本文深入探讨Python中常见算法问题的高效实现方法,通过实际比赛案例展示如何优化时间复杂度和空间复杂度。 一、前缀和与差分数组 前缀和与差分数组是算法…...

使用 Excel 实现绩效看板的自动化

引言 在日常工作中,团队的绩效监控和管理是确保项目顺利进行的重要环节。然而,面临着以下问题: ​数据分散:系统中的数据难以汇总,缺乏一个宏观的团队执行情况视图。​看板缺失:系统本身可能无法提供合适…...

Tomcat新手登峰指南:从零到部署的原子化实践

开篇:为什么选择Tomcat? 2024年StackOverflow调查显示,Tomcat以68.9%占有率蝉联Java Web服务器榜首。但新手常陷入三大误区: 直接使用IDE内置Tomcat导致生产环境配置失准权限配置不当引发安全漏洞内存参数未优化造成性能瓶颈 本…...

vue3怎么和大模型交互?

引言 平时我们都是用的在线的AI工具,直接输入问题,然后AI回答我们,那么怎么把AI接入项目中呢? 这个问题问得好。 方案一:引入第三方已封装好的UI库方案二:自己写 对于方案一,市面上已有一些…...

【网络编程】HTTP网络编程

13.1 HTTP 简介 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是用于从万维网(WWW:World Wide Web) 服务器(简称Web 服务器)传输超文本到本地浏览器的传送协议,基于TCP/IP 通信协 议来传递数据 (HTML 文件、图片文件、查询结果等)。 13.2 HTTP 的工作原理 …...

【Qt】QWidget属性介绍

🏠个人主页:Yui_ 🍑操作环境:Qt Creator 🚀所属专栏:Qt 文章目录 前言1. enabled属性2.geometry属性2.1 改变控件位置2.2 女神表白程序2.3 知识补充——window frame 3. windowsTitle属性4. windowIcon属性…...

『Rust』Rust运行环境搭建

文章目录 rust编译工具rustupVisual Studio VS Code测试编译手动编译VSCode编译配置 参考完 rust编译工具rustup https://www.rust-lang.org/zh-CN/tools/install 换源 RUSTUP_DIST_SERVER https://rsproxy.cn RUSTUP_UPDATE_ROOT https://rsproxy.cn修改rustup和cargo的安…...

vue/react/vite前端项目打包的时候加上时间最简单版本,防止后端扯皮

如果你是vite项目,直接写一个vite的插件,通过这个插件可以动态注入环境变量,然后当打包的时候,自动注入这个时间到环境变量中,然后在项目中App.vue中或者Main.tsx中打印出来,这就知道是什么时候编译的项目了…...

基于大模型的上睑下垂手术全流程预测与方案优化研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 研究方法与创新点 二、上睑下垂相关理论基础 2.1 上睑下垂的定义与分类 2.2 发病机制与影响 2.3 传统治疗方法概述 三、大模型技术原理与应用 3.1 大模型概述 3.2 在医疗领域的应用现状 3.3 用于上睑下垂预测的…...

Cadence学习笔记3

设置 PCB 层叠 初始我们有一个两层板,如果需要添加层叠怎么办? 点击进入层叠设置 首先右击 TOP 层下面的空白,然后鼠标右键进行 add layer 然后选择 Plane(一般层就是这个) 就好 然后 add就行 设置光标显示形式 在 setup ->…...

Linux系统下如何部署svmspro平台

上传svmspro服务 rz回车后选择svmspro.zip上传如果提示rz命令未找到,请先运行 yum install -y lrzsz 安装将svmspro.zip解压出来,并拷贝到/usr/目录下,命令如下: unzip svmspro.zip//解压程序包cp svmspro /usr/ -r//将svmspro文件…...

vue3:八、登录界面实现-忘记密码

一、页面效果 二、实现 1、视图层 <el-form-item class"flex flex-between"><el-checkbox label"记住密码" v-model"remember" /> </el-form-item> 参考 Checkbox 多选框 | Element Plus 2、逻辑层 首先设置记住密码的变…...

el-table树形表格合并相同的值

el-table树形表格合并相同的值 el-table树形表格合并相同的值让Ai进行优化后的代码 el-table树形表格合并相同的值 <style lang"scss" scoped> .tableBox {/deep/ &.el-table th:first-child,/deep/ &.el-table td:first-child {padding-left: 0;} } …...

Apache Tomcat漏洞,对其进行升级

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 升级背景&#xff1a; 近日&#xff0c;新华三盾山实验室监测到 Apache 官方修复了一个远程代码执行漏洞 (CVE-2025-24813) &#xff0c;其CVSS3 漏洞评分为 7.5 。 影响范围 9.0.0.M1 ≤…...

工程实践:如何使用SU17无人机来实现室内巡检任务

阿木实验室最近发布了科研开发者版本的无人机SU17&#xff0c;该无人机上集成了四目视觉&#xff0c;三维激光雷达&#xff0c;云台吊舱&#xff0c;高算力的机载计算机&#xff0c;是一个非常合适的平台用于室内外巡检场景。同时阿木实验室维护了多个和无人机相关的开源项目。…...

时序优化学习笔记

0.代码对应的底层调用 if-else的判定条件需要LUT实现&#xff0c;累加器的进位需要靠CARRY实现。 1.逻辑级数的概念 简单来讲就是组合逻辑串联的个数 逻辑级数查询命令 report_design_analysis -logic_level_distribution -logic_level_dist_paths 5000 -name design_analy…...

OSPF-3 1类LSA Router LSA

前面两期我们介绍了OSPF的邻居与邻接建立的关系及失败因素和原因 这章我们来说说OSPF是如何通过不同的LSA去描述拓扑的信息以及路由信息 一、概述 OSPF通过不同的LSA来构成LSDB链路状态数据库,再通过SPF算法来计算出最优的最短路径 二、LSA的分类 类型名称描述传播范围1类…...

纳米压印技术制备AR眼镜的参考步骤

纳米压印技术&#xff08;Nanoimprint Lithography, NIL&#xff09;在 AR&#xff08;增强现实&#xff09;眼镜中的应用主要集中在光学元件的制造上&#xff0c;例如衍射光栅、波导和微透镜阵列等。以下是使用纳米压印技术制备 AR 眼镜光学元件的详细步骤&#xff1a; 1. 设…...

FX-std::list

std::list 是 C 标准库中的一个双向链表容器&#xff0c;定义在 <list> 头文件中。它支持在任意位置高效地插入和删除元素&#xff0c;但不支持随机访问。以下是 std::list 的基本用法和一些常见操作&#xff1a; 1. 包含头文件 #include <list> 2. 定义和初始化…...