本博客的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服务进行交互,并使用该服务生成文本。下面是逐行解析:
-
from openai import OpenAI
:从openai
库中导入OpenAI
类。 -
import httpx
:导入httpx
库,这个库用于发送HTTP请求。 -
client = OpenAI(...)
:创建一个OpenAI
类的实例,配置了自定义的API基础URL和API密钥。这个实例将用于与OpenAI API服务进行交互。 -
base_url="https://..."
:设置API的基础URL,这个URL指向一个第三方服务(代理)。 -
api_key="sk-..."
:设置用于认证的API密钥。 -
http_client=httpx.Client(...)
:在创建OpenAI
实例时,传递一个httpx.Client
实例作为http_client
参数。这个httpx.Client
实例也被设置了相同的基础URL,并配置为跟随HTTP重定向。 -
follow_redirects=True
:配置httpx.Client
实例在发送请求时跟随HTTP重定向。 -
def get_response(input):
:定义一个函数get_response
,它接受一个字符串参数input
,这个字符串将作为输入提示传递给模型。 -
completion = client.chat.completions.create(...)
:调用client
的chat.completions.create
方法来生成文本。传递的参数包括模型名称和消息列表。 -
model="gpt-3.5-turbo"
:指定使用的模型是gpt-3.5-turbo
。 -
messages=[...]
:定义一个消息列表,包含两个字典,分别代表系统消息和用户输入。 -
{"role": "system", "content": "You are a helpful assistant."}
:系统消息,告诉模型扮演一个有帮助的助手角色。 -
{"role": "user", "content": input}
:用户消息,内容是函数参数input
的值。 -
message = completion.choices[0].message.content
:从生成的完成结果中获取第一个选择的消息内容。 -
return message
:返回获取的消息内容。 -
user_input = input("我:")
:如果作为主程序运行,从标准输入读取用户输入。 -
generated_text = get_response(user_input)
:使用用户输入调用get_response
函数来生成文本。 -
print(f"AI:{generated_text}")
:打印出由AI生成的文本。
3.执行结果
至此,demo就成功地运行起来了。