前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【零基础】Python开发调用 ChatGPT API 的命令行工具

【零基础】Python开发调用 ChatGPT API 的命令行工具

原创
作者头像
千万别过来
修改2023-11-14 16:24:32
1.3K1
修改2023-11-14 16:24:32
举报
文章被收录于专栏:推荐算法学习推荐算法学习

0. 前言

本文章针对python初学者,介绍如何使用命令行调用ChatGPT API来实现最基本的聊天功能。

1. 前期准备

需要准备的东西比较简单:

  • python3环境
  • OpenAI API Key

1.1 python3环境

python3环境对于初学者来说应该都很熟练了,我个人推荐用anaconda3来安装python3环境。以anaconda3为例,配置OpenAI所需要的基本环境。如果不知道anaconda3如何按照python可以网上随便搜一篇教程哈。

接着在自己的虚拟环境中,安装openai库:使用pip install openai命令。安装toml库:使用pip install toml命令(后面配置文件会用到)。

1.2 OpenAI API Key

如果全部符合以下条件,可以申请OpenAI官方的API,官方API有一定免费的额度:

  • 访问国外网站,且必须是美丽国或盟友的节点,并且在后续需要一直使用
  • 拥有一个美丽国或盟友的可以接受短信的手机号注册账号用(或者愿意花美刀网上去买)
  • 拥有一个海外不会被ban的邮箱账号(OpenAI禁掉了很多邮箱)
  • 愿意花钱充值续费(VISA外币信用卡之类的)

如果以上条件不符合,那目光可以转向这里:

https://github.com/chatanywhere/GPT_API_free/tree/main

github上的免费项目,只需要用一个注册1个月以上的github账号就可以免费使用,并且不需要访问国外网站,不需要注册OpenAI账号。但是需要注意的是免费API Key限制60请求/小时/IP&Key调用频率。正常个人使用完全不是问题。

点击这里获取"sk-"开头的API Key,并保存下来。

2. 调用API核心代码介绍

这章简单介绍一下核心API的用法,不想看的同学直接进入第三章复制粘贴~

这里需要注意的是,由于我们使用的是免费的API,因此需要把刚才获取的API Key配置到openai.api_key里面,并配置openai.api_base"https://api.chatanywhere.com.cn/v1"。如果是使用官方的API,只需要配置openai.api_key即可。

代码语言:javascript
复制
import openai
openai.api_key = "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
openai.api_base = "https://api.chatanywhere.com.cn/v1"

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "你是一个专业的生物老师,可以帮助解答生物问题"},
        {"role": "user", "content": "你是谁"},
    ]
)
print(response["choices"][0]["message"]["content"])

调用GPT的核心代码为openai.ChatCompletion.create

  • model可以更换为其他的模型,可以在官网获取信息,gpt-3.5-turbo是我们常说的ChatGPT。
  • messages为历史的对话信息。
    • "role": "system"可以给模型预设,比如我这里预设是生物老师
    • "role": "user"是你自己说的话
    • "role": "assistant"为GPT回复的消息
  • temperature:用于控制模型生成文本时的随机性。较高的值(如 1.0)会导致模型生成更多样化、更随机的文本。较低的值(如 0.1)会让模型生成更确定、更接近训练数据的文本。默认值为0.7。

调用之后的返回值是一个dict,直接使用response["choices"][0]["message"]["content"]即可获取结果。其他一些参数以及使用方法,这里不过多的做介绍,强烈推荐看官方的API文档:

https://platform.openai.com/docs/api-reference/introduction https://platform.openai.com/docs/guides/gpt

3. 编写代码

3.1 创建配置文件

本文这里使用Toml作为配置文件,不熟悉的可以参考【之前的文章】,或者自行更换为yaml、json等。

创建一个名为config.toml的配置文件,并将1.2的API Key替换sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,接着配置一些其他信息:

代码语言:javascript
复制
[global]
api_key = "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
api_base = "https://api.chatanywhere.com.cn/v1"
model = "gpt-3.5-turbo"

[settings]
system_message = "你是一个专业的生物老师,可以帮助解答生物问题"
temperature = 0.7

[logging]
logfile = "chatgpt_his.log"

3.2 编写完整脚本

接下来,将编写一个简单的Python脚本,用于调用ChatGPT API并在命令行中与其进行交互。

首先,一个名为chatgpt.py的文件,并添加以下代码:

代码语言:javascript
复制
import openai
import sys
import toml
import logging

def load_config():
    config = toml.load("config.toml")
    return config["global"], config["settings"], config["logging"]

def chat(api_key, api_base, model, messages, temperature):
    openai.api_key = api_key
    openai.api_base = api_base

    try:
        response = openai.ChatCompletion.create(
            model=model,
            messages=messages,
            temperature=temperature
        )
    except Exception as e:
        logging.error(f"API请求失败:{e}")
        return "抱歉,暂时无法回答您的问题。"

    return response.choices[0].message.content.strip()

def setup_logging(logfile):
    logging.basicConfig(filename=logfile, level=logging.INFO, format='%(asctime)s [%(levelname)s] - %(message)s')

if __name__ == '__main__':
    global_config, settings_config, logging_config = load_config()

    api_key = global_config["api_key"]
    api_base = global_config["api_base"]
    model = global_config["model"]
    system_message = settings_config["system_message"]
    temperature = settings_config["temperature"]
    logfile = logging_config["logfile"]

    setup_logging(logfile)

    messages = [{"role": "system", "content": system_message}]

    print("与ChatGPT进行多轮对话。输入'exit'退出对话。")
    while True:
        prompt = input('请输入您的问题:')

        if prompt.lower() == 'exit':
            break

        messages.append({"role": "user", "content": prompt})
        response = chat(api_key, api_base, model, messages, temperature)
        messages.append({"role": "assistant", "content": response})

        print(f'ChatGPT 回答:{response}')
        logging.info(f"问题:{prompt},回答:{response}")

在代码中,通过load_config函数从TOML配置文件中加载API Key以及各种配置信息。

接着使用chat函数调用ChatGPT API。使用openai.ChatCompletion.create()方法发送请求。

__main__部分,使用while循环进行多轮对话。将问题和ChatGPT的回答添加到messages列表中,并将整个对话历史作为输入发送给ChatGPT API。这样可以使ChatGPT了解整个对话上下文。

最后将历史对话记录保存在chatgpt_his.log日志文件中。

4. 运行命令行工具

保存chatgpt.pyconfig.toml文件到同一目录后,打开命令行,cd到文件所在的目录,并运行以下命令就可以使用啦!

代码语言:javascript
复制
python chatgpt.py

同时在日志文件中,可以看到我们保存下来的对话记录:

5. 总结

总的来说命令行调用还是不太方便,有能力的大伙话可以研究一下chatbox或者是其他插件(浏览器、vscode之类)。这样用起来更舒服,生产力翻倍!

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 前言
  • 1. 前期准备
    • 1.1 python3环境
      • 1.2 OpenAI API Key
        • 2. 调用API核心代码介绍
        • 3. 编写代码
          • 3.1 创建配置文件
            • 3.2 编写完整脚本
            • 4. 运行命令行工具
            • 5. 总结
            相关产品与服务
            短信
            腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档