揭开ChatGPT面纱(1):准备工作(搭建开发环境运行OpenAI Demo)

news2025/1/16 1:37:01

文章目录

  • 序言:探索人工智能的新篇章
  • 一、搭建开发环境
  • 二、编写并运行demo
    • 1.代码
    • 2.解析
    • 3.执行结果

本博客的gitlab仓库:地址,本博客对应01文件夹。


序言:探索人工智能的新篇章

随着人工智能技术的飞速发展,ChatGPT作为其中的佼佼者,已经逐渐从实验室走向了公众视野。它不仅仅是一个简单的聊天机器人,而是代表了自然语言处理(NLP)领域的前沿技术。在ChatGPT的帮助下,我们能够实现更自然、更智能的人机交互,这无疑为开发者和普通用户带来了全新的体验和可能性。

然而,对于许多初学者和爱好者来说,如何开始接触和使用ChatGPT,可能是一个令人望而却步的问题。从注册账号到搭建开发环境,再到利用线上平台如Google Colab进行实践,每一步都充满了挑战。本系列博客文章的目的就是揭开ChatGPT的神秘面纱,带你一步步走进这个充满魔力的AI世界。

在《揭开ChatGPT面纱(一):准备工作》中,我将从最基础的步骤开始,包括如何搭建一个适合的开发环境,以及如何编写一个OpenAI的Demo来快速体验ChatGPT的强大功能。

  • 获取OpenAI的API Key:

在国内想要注册OpenAI是比较困难的,有的网站声称可以提供海外虚拟信用卡和海外手机号,这是不靠谱的,后续注册好了也可能会在使用过程中被封号,因此我找了第三方(TB)来获得API Key。总之,这个步骤请自行解决。

一、搭建开发环境

首先,确保你已经在电脑上安装了conda,以下命令均是使用的conda创建的虚拟环境。

  • 创建虚拟环境:
conda create -n openaidemo python==3.10
# 激活
conda activate openaidemo
  • 安装所需依赖:
pip install openai==1.6.1

二、编写并运行demo

我编写了一个可以和gpt3.5进行单词对话的demo,代码如下:

1.代码

from openai import OpenAI
import httpx
import json

# 读取配置,在上传gitlab时配置文件ignore了
with open('../config/openai.json') as config_file:
    config = json.load(config_file)

# 根据你自己的情况更改代理地址(如果你开了VPN就不用配这个)和API key
client = OpenAI(
    base_url=config['base_url'],
    api_key=config['key'],
    http_client=httpx.Client(
        base_url=config['base_url'],
        follow_redirects=True,
    ),
)


def get_response(input):
    completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": input}
        ]
    )
    message = completion.choices[0].message.content
    return message


if __name__ == "__main__":
    user_input = input("我:")
    generated_text = get_response(user_input)
    print(f"AI:{generated_text}")

2.解析

这段代码使用了openai库和httpx库,目的是创建一个客户端来与一个自定义的OpenAI API服务进行交互,并使用该服务生成文本。下面是逐行解析:

  1. from openai import OpenAI:从openai库中导入OpenAI类。

  2. import httpx:导入httpx库,这个库用于发送HTTP请求。

  3. client = OpenAI(...):创建一个OpenAI类的实例,配置了自定义的API基础URL和API密钥。这个实例将用于与OpenAI API服务进行交互。

  4. base_url="https://...":设置API的基础URL,这个URL指向一个第三方服务(代理)。

  5. api_key="sk-...":设置用于认证的API密钥。

  6. http_client=httpx.Client(...):在创建OpenAI实例时,传递一个httpx.Client实例作为http_client参数。这个httpx.Client实例也被设置了相同的基础URL,并配置为跟随HTTP重定向。

  7. follow_redirects=True:配置httpx.Client实例在发送请求时跟随HTTP重定向。

  8. def get_response(input)::定义一个函数get_response,它接受一个字符串参数input,这个字符串将作为输入提示传递给模型。

  9. completion = client.chat.completions.create(...):调用clientchat.completions.create方法来生成文本。传递的参数包括模型名称和消息列表。

  10. model="gpt-3.5-turbo":指定使用的模型是gpt-3.5-turbo

  11. messages=[...]:定义一个消息列表,包含两个字典,分别代表系统消息和用户输入。

  12. {"role": "system", "content": "You are a helpful assistant."}:系统消息,告诉模型扮演一个有帮助的助手角色。

  13. {"role": "user", "content": input}:用户消息,内容是函数参数input的值。

  14. message = completion.choices[0].message.content:从生成的完成结果中获取第一个选择的消息内容。

  15. return message:返回获取的消息内容。

  16. user_input = input("我:"):如果作为主程序运行,从标准输入读取用户输入。

  17. generated_text = get_response(user_input):使用用户输入调用get_response函数来生成文本。

  18. print(f"AI:{generated_text}"):打印出由AI生成的文本。

3.执行结果

在这里插入图片描述

至此,demo就成功地运行起来了。


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

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

相关文章

代码随想录训练营Day 29|Python|Leetcode|● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

860.柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确…

【Python-类型注解】

Python-类型注解 ■ Python-类型注解■ 类型注解■ 数据类型注解■ 容器类型注解 ■ 函数方法■ 方法形参类型注解 (形参名:类型)■ 方法返回值类型注解 ( -> 返回值类型) ■ # type:类型 (在注释中进行类型注解)■ Union类型 &#xff08…

指令和界面【Linux】

指令和界面 前言一、指令 vs 界面交互的需求满足需求的第一阶段——指令满足需求的第二阶段-界面时间 二、指令和界面交互区别为什么要学命令行总结 前言 Linux操作系统提供了丰富的命令行界面和图形用户界面工具,用户可以根据自己的需求选择适合的界面进行操作。命…

使用 ECharts 绘制咖啡店各年订单的可视化分析

使用 ECharts 绘制咖啡店各年订单的可视化分析 在这篇博客中,我将分享一段使用 ECharts 库创建可视化图表的代码。通过这段代码,我们可以直观地分析咖啡店各年订单的情况。 饼图 这段代码包含了两个 ECharts 图表,一个是饼图,用…

【C++庖丁解牛】C++11---右值引用和移动语义

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1 左值引用和右值引用2 左…

手把手教数据结构与算法:有序线性表设计

问题描述 设计一个有序线性表类,要求完成初始化,插入和遍历功能,使得表内元素实现有序排列(从小到大)。同时实现合并功能,使得两个线性表能够合并为一个线性表(可能存在重复元素)。…

Redis中的缓存击穿、缓存穿透、缓存雪崩问题

1.什么是缓存击穿? 客户端恶意访问一个不存在的数据,从而造成穿透缓存,请求直接到达数据库,频繁的发送这一类的请求,直接查询数据库,数据库的压力变大。 1.1如何解决缓存击穿呢? 1&#xff0…

世界读书日,想变自律,听书690本的我最推荐的3本书

前言 今天是世界读书日,如果你曾经买了健身卡没有坚持下来,想减肥却管不住嘴,迈不开腿,想养成好习惯,解决自律问题。作为听书 690 本的我最推荐的3本书。 Top3书籍:《微习惯》《原子习惯》《福格行为模型》…

【笔试强训】day9

1.添加逗号 思路&#xff1a; 没思路 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include<string> #include<algorithm> using namespace std;int main() {string a;cin >> a;string ans;int p 1;for (int i a.si…

通过“命令提示符(cmd)”注销后台帐号用户

通过“命令提示符&#xff08;cmd&#xff09;”注销后台帐号用户 1 2 3 4 分步阅读 电脑上面后台使用的用户较多&#xff08;包括远程连接&#xff09;&#xff0c;电脑的运行负荷将会增加&#xff0c;电脑响应缓慢&#xff0c;甚至会影响到正常的使用&#xff0c…

架构师系列-MYSQL调优(八)- 索引多表优化案例

用户手机认证表 该表约有11万数据,保存的是通过手机认证后的用户数据关联字段: user_id CREATE TABLE mob_autht (id int(11) NOT NULL AUTO_INCREMENT COMMENT 标识,user_id int(11) NOT NULL COMMENT 用户标识,mobile varchar(11) NOT NULL COMMENT 手机号码,seevc_pwd varc…

海康智能相机FTP本地存图流程

背景&#xff1a;近期一个新项目需要使用到智能相机&#xff0c;借助智能相机算法直接输出检测结果并将相机图像进行本地化保存和展示。由于申购目标智能相机未到&#xff0c;暂时使用测试智能相机。 目标智能相机型号&#xff1a;海康智能相机MV-SC3050XC 当前测试相机型号…

【计算机毕业设计】影院管理系统产品功能介绍——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

如何在PostgreSQL中设置自动清理过期数据的策略

文章目录 方法一&#xff1a;使用临时表和定期清理步骤&#xff1a;示例代码&#xff1a;创建临时表&#xff1a;定期清理脚本&#xff08;bash psql&#xff09;&#xff1a; 方法二&#xff1a;使用分区表和定期清理步骤&#xff1a;示例代码&#xff1a;创建分区表&#xf…

ZY1-02D (ZY1E)多光谱数据预处理

卫星介绍 资源一号02D卫星&#xff08;5米光学卫星&#xff09;于2019年9月12日成功发射&#xff0c;卫星搭载的两台相机&#xff0c;可有效获取115公里幅宽的9谱段多光谱数据以及60公里幅宽的166谱段高光谱数据&#xff0c;其中全色谱段分辨率可达2.5米、 多光谱为10米、高光谱…

【图文教程】在PyCharm中导入Conda环境

文章目录 &#xff08;1&#xff09;在Anaconda Prompt中新建一个conda虚拟环境&#xff08;2&#xff09;使用PyCharm打开需要搭建环境的项目&#xff08;3&#xff09;配置环境 &#xff08;1&#xff09;在Anaconda Prompt中新建一个conda虚拟环境 conda create - myenv py…

数据分析专家能力模型

招式&#xff1a;懂商业&#xff08;业务能力&#xff09; 外功更偏重于技能&#xff0c;首先需要懂招式&#xff0c;即懂商业&#xff0c;数据分析最终是为业务服务的&#xff0c;无论是互联网企业准求的用户增长和UJM分解&#xff0c;还是传统企业追求的降本增效和精细化运营…

Linux多进程(一)创建进程与进程控制

一、进程状态 进程一共有五种状态分别为&#xff1a;创建态&#xff0c;就绪态&#xff0c;运行态&#xff0c;阻塞态(挂起态)&#xff0c;退出态(终止态)其中创建态和退出态维持的时间是非常短的&#xff0c;稍纵即逝。主要是就绪态, 运行态, 挂起态三者之间的状态切换。 就绪…

视频不够清晰怎么办?教你几种有效方法

在我们日常生活中&#xff0c;有时候我们会遇到不清晰的视频&#xff0c;这给我们带来了很多不便。那么&#xff0c;怎么将不清晰的视频变清晰呢&#xff1f;本文将为您介绍一些常用的软件工具&#xff0c;帮助您提升视频的清晰度。 方法一&#xff1a;使用AI技术 AI技术可以通…