揭开ChatGPT面纱(一):准备工作(搭建开发环境运行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.contentreturn messageif __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.mzph.cn/news/826275.shtml

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

相关文章

go 语言 mage 安装踩坑

具体安装代码:mage 官方地址:Mage :: Mage git clone https://github.com/magefile/mage cd mage go run bootstrap.go 在go部署完后,执行上面的脚本,发现最后一句老是执行不成功: rootBDGF-7FPQW93:/home/gw00241401…

2024燃动智火-业务视角的中国企业AI+学习发展报告

来源:新华三 学习型组织的数字化转型是众多企业关注的焦点,数字战略需要人才升级,数字 化学习加速人才培养。AI 技术在学习中的运用,为企业学习型组织的数字化转型插 上了飞翔的翅膀。这份报告解码了AI 时代企业的学习发展&#…

混合现实(MR)开发框架

混合现实(MR)开发框架为开发者提供了构建MR应用程序所需的基本工具和功能。它们通常包括3D引擎、场景图、输入系统、音频系统、网络功能以及支持同时处理现实世界和虚拟世界信息的功能。北京木奇移动技术有限公司,专业的软件外包开发公司&…

springboot+ssm基于Java的小型企业银行账目管理系统代码Lw

本毕业设计课题要求学生基于软件工程方法,根据课题的需求,给出小型企业银行账目管理系统概要设计、详细设计、数据库的设计以及系统实现和测试,并撰写规范的毕业设计说明书。该系统的主要模块有:系统管理、帐目管理、查询统计、用…

vue.runtime.esm.js?c320:4625 [Vue warn]: Failed to resolve directive: lazy

使用图片懒加载插件报错 原因:vue2与懒加载插件默认版本不相容导致的 解决方法:重新安装lazyLoad npm install vue-lazyload1.3.3 --save-dev

如何使用 ArcGIS Pro 制作边界晕渲效果

在某些出版的地图中,边界有类似于“发光”的晕渲效果,这里为大家介绍一下如何使用ArcGIS Pro 制作这种晕渲效果,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的行政区划数据,除了行政区划数据&#xff0c…

ruoyi-nbcio-plus基于vue3的flowable多租户机制

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

MyBatis 面试题(八)

1. MyBatis-Plus 是什么框架? MyBatis-Plus 是一个 MyBatis 的增强工具,它在 MyBatis 的基础上进行了功能扩展和增强,旨在简化开发、提高效率。这个框架提供了许多方便的功能,如自动生成 MyBatis 的 mapper 接口以及对应的实现类&#xff0…

VMWare ubuntu 18.04 网卡丢失

平台信息&#xff1a; ubuntu 18.04 ifconfig效果&#xff1a; lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 280 bytes 20…

数据库服务器NTP调整

查看时间&#xff1a; watch date --NTP配置 1、查看时间 ntpdate -q XX.XX.192.3 ntpdate XX.XX.192.3 2、配置时间服务器 vi /etc/ntp.conf server XX.XX.192.3 iburst 3、设置时间不允许回调 vi /etc/sysconfig/ntpd OPTIONS"-u ntp:ntp -p /var/run/ntpd.p…

成长工作思考

前言 这一篇&#xff0c;不是技术博客&#xff0c;而是个人发展的一些思考和总结&#xff0c;复盘才会做的更好&#xff0c;成长的道路当然不是随着时间推移 开场白 不劳而获的是时间&#xff0c;完全免费的&#xff0c;但是免费的同时也是最贵的。向前看仿佛时间悠悠无边&a…

【Flutter】多语言方案二:GetX 版

介绍 多语言方案&#xff1a;GetX版&#xff0c;需要手动自定义字符串引用常量&#xff0c;优点不需要自己管理状态。 目录 介绍运行效果一、安装 GetX二、使用1.语言配置 在lib/core下创建一个language文件夹&#xff0c;文件夹下创建一个local.dart文件2.language文件夹下创…

程序员自由创业周记#32:新产品构思

程序员自由创业周记#32&#xff1a;新产品构思 新作品 我时常把自己看做一位木匠&#xff0c;有点手艺&#xff0c;能做一些作品养活自己。而 加一、Island Widgets、Nap 就是我的作品。 接下来在持续维护迭代的同时&#xff0c;要开启下一个作品的创造了。 其实早在2022的1…

wujie微前端接入笔记

由于项目目前采用 wujie 方案,所以本文重点介绍 wujie !!! 如果图片打不开,请在本机访问,图片在外网图床 主应用 wujie src\components\Layout\WujieLayout : 无界子应用渲染的容器src\components\Layout\hooks: 无界相关的 hook子应用类似 1.什么是微前端 微前端是一种软…

进程间通信(1)管道

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

【C语言】内存函数-memcpy-memmove-memset...用法及实现,沉淀自己!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. memcpy函数使用和模拟实现 2. memmove使用和模拟实现 3. memset函数的使用 4. memcmp函数的使用 1. memcpy函数使用和模拟实现 <string.h>-------…

Buildroot系统构建学习笔记(以百问网imx6ullPro开发板为例)

一、Builroot是什么&#xff1f; Buildroot是一组Makefile和补丁&#xff0c;可简化并自动化地为嵌入式系统构建完整的、可启动的Linux环境(包括bootloader、Linux内核、包含各种APP的文件系统)。Buildroot运行于Linux平台&#xff0c;可以使用交叉编译工具为多个目标板构建嵌…

沉思录 (梁实秋)

链接&#xff1a;https://pan.quark.cn/s/8e27564b02f5

Python 检测当前系统的内存及硬盘资源,发送邮件告警通知(告警内容包含告警语句及网卡和系统版本时间)

颜色块 rootbogon:~ 2024-04-18 16:16:40# cat DefaultColor.py ######################################################################### # File Name: DefaultColor.py # Author: eight # Mail: 18847097110163.com # Created Time: Thu 11 Apr 2024 10:…

2024年了,抖音小店如此内卷,新手商家还能赚到钱吗?

大家好&#xff0c;我是电商糖果 关于抖音小店&#xff0c;网上有很多声音一直在说&#xff0c;这个项目不能做了。 已经内卷到一定程度了&#xff0c;新手商家入局&#xff0c;很难在里面喝到一口汤。 糖果是从2020年开始做的抖音小店&#xff0c;算是比较早期的商家了&…