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

文章目录

  • 序言:探索人工智能的新篇章
  • 一、搭建开发环境
  • 二、编写并运行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.mfbz.cn/a/567721.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GITHUB的VB代码无法加载的问题解决

GITHUB里有不少好的VB代码,但是下载之后,经常出现工程加载出错的问题,例如: LOG文件为: 不能加载 0 行 0: 不能加载文件 D:\xxxx\Semi VB API Loader\frmMain.frm 。 原因其实很简单,github里的换行符是u…

OpenFE:开启数据特征工程新时代

OpenFE:开启数据特征工程新时代 数据特征工程是机器学习和数据分析领域中至关重要的一环,它涉及对原始数据进行处理和转换,以提取出有用的特征,为模型构建和预测提供更好的输入。在这个领域中,Python库OpenFE为数据科学…

高级控件4:Spinner

Spinner下拉列表组件 主要集合ArrayAdapter、SimpleAdapter以及自定义的Adapter(继承自BaseAdapter)配合使用实现下拉选择或者对话框中选择某一条目。下拉使用的更多,所以,接下来的案例也会重在演示下拉效果。 本次基本就是上代…

深入理解高级加密标准(Advanced Encryption Standard)

title: 深入理解高级加密标准(Advanced Encryption Standard) date: 2024/4/23 20:04:36 updated: 2024/4/23 20:04:36 tags: AES概述加密原理优势特点算法详解安全性应用实践案例分析 第一章:AES概述 AES的历史和背景 历史: 高…

【八股文】Spring 谈谈你对AOP的理解

AOP AOP(Aspect-Oriented Programming,面向切面编程):是一种新的方法论,是对传统 OOP(Object-Oriented Programming,面向对象编程)的补充。 面向对象是纵向继承,面向切面是横向抽取。 OOP思想是一种垂直纵向的继承体…

上网行为管理软件怎么选 三款好用的上网行为管理软件

上网行为管理软件怎么选 三款好用的上网行为管理软件 一款优秀的上网行为管理软件可以满足企业的多种需求,帮助企业有效监督员工的行为,提升工作效率和企业效益,但是这些软件差异较大,选择的时候需要考虑这些因素。 1、明确需求 …

基于一款最多能够支持10000路的 modbus RS485 led灯光控制板做灯控程序

背景 介绍一款之前用过的一款设备,基于RS485通讯协议,控制LED灯或RGB灯带。 设备介绍 之前用它来做智能中药柜的灯控板,结合物联网网关,modbus采集,mqtt转发,以及mqtt的rpc指令下发 设备图片 功能说明 …

Java基本语法(基础部分)

Java基本语法 文章目录 Java基本语法前言一、准备工作1.1 计算机软件与硬件1.2 计算机编程语言1.3 Java语言概述&程序分析1.4 Java环境搭建&Java API1.5 Java核心机制JVM 二、变量2.1 关键字&标识符2.2 变量2.3 数据类型(基本数据类型)2.3.1 基本数据类型2.3.2 基本…

互联网营销两大宗师:周鸿祎和雷军做个人IP有什么不同?

前几天周鸿祎说要把自己的迈巴赫卖了,准备换国产新能源,还喊话让各个车企给他送车去体验。不少车企都送去了自己的最新车型,只有雷军直接回答,“等SUV出”。我们是在吃瓜,作者却是从中看到了新老营销宗师的手法不同。 最近,在纪念互联网30周年的座谈会上,发生了一件趣事…

JAVA网络编程、项目验证码实现

什么是网络编程? 在网络通信协议下,不同计算机上运行的程序,进行的数据传输。 应用场景:即时通信、网游对战、金融证券、国际贸易、邮件、等等 不管是什么场景,都是计算机跟计算机之间通过网络进行数据传输 Java中可以使用ja…

wordpress建网站主题案例推荐

wordpress企业网站主题案例 https://www.mymoban.com/wordpress/ wordpress公司官网主题案例 https://www.wowsoho.com/jianzhan wordpress外贸主题案例 https://www.wpniu.com/moban

一维递归:递去

示例&#xff1a; /*** brief how about recursive-forward-1? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h>…

深度学习-数据操作

目录 张量通过shape属性访问张量的形状通过shape属性访问张量中元素的总数reshape改变张量的形状&#xff08;不改变元素数量和元素值&#xff09;使用全0、全1、其他常量或者从特定分布中随机采样的数字通过提供包含数值的Python列表为所需张量中的每个元素赋予确定值。张量的…

记录交叉编译环境配置--海思开发板的 嵌入式nginx和 php的移植

嵌入式 lnmp搭建的记录 一些交叉编译的配置环境思路分享&#xff1a;P&#xff1a;php编译PHP可能遇到的问题configure阶段&#xff1a;Makefile-make阶段&#xff1a;Makefile-make install阶段&#xff1a; N&#xff1a;Nginx 文章比较水&#xff0c;并没有没解决什么实际问…

导出JVM的线程信息

1. 查询出Java应用的进程的PID ps -ef|grep java 此时的PID是 33 2. 使用JDK自带的工具jstack导出日志 jstack -l 33 > 2022jstack.log 3.然后直接下载

自动备份的小软件

自动备份的小软件 前几天有个小姐姐和我说&#xff0c;他的硬盘坏了&#xff0c;但是他有没有备份&#xff0c;所以我决定做一个自动备份的软件。 软件整体是使用pythonpyqt5做到。 github链接 软件截图 使用效果 使用方法 教程 流程图 优势 可以很大程度上解决数据丢失…

平均月薪超4.6万!AI领域重磅课程汇总,哈佛,斯坦福,微软,谷歌等出品!

2023年底&#xff0c;由脉脉高聘人才智库发布的《2023泛人工智能人才洞察》报告显示&#xff0c;2023年前八个月内新发布的AI岗位平均月薪超过了4.6万元&#xff0c;而且人才供不应求&#xff0c;甚至出现了5个岗位争夺2个人才的情况。 本文章整理了10项来自全球各高校与知名企…

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

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

Bentley二次开发教程02-开发环境搭建

1 Bentley 平台介绍 图 1 Bentley 平台介绍 Bentley 软件大致可分为四大平台&#xff0c;分别为用于设计的 Microstation 平台&#xff0c;用于协同的 ProjectWise 平台&#xff0c;用于对资产进行全生命周期管理的 AssetWise 平台和数据互联互通的 数字孪生平台 iTwin。 1.1 …

Flume的安装及使用

Flume的安装及使用 文章目录 Flume的安装及使用Flume的安装1、上传至虚拟机&#xff0c;并解压2、重命名目录&#xff0c;并配置环境变量3、查看flume版本4、测试flume5、flume的使用 Flume的安装 1、上传至虚拟机&#xff0c;并解压 tar -zxvf apache-flume-1.9.0-bin.tar.g…