583 字
3 分钟
Python调用Openai接口实现chatGPT问答

主要是调用opanai库中的OpenAI接口实现。本文讨论的是openai-1.x以上版本,我在写这篇文章时使用的时openai-1.37。

1. 准备工作#

在开始之前,你需要拥有一个openai平台的api_key,可以去淘宝或官网购买,这里推荐淘宝。

因为国内商家为了防止因代理不稳定,且确保购买的号不被封号,使用的是中转接口(卖家服务器api负责转发消息问答)。

2. 开始#

介绍两个函数接口。

OpenAI(base_url, api_key): chatgpt应用client创建接口,我们只需要指定base_urlapi_key两个参数即可。base_url表示的是我们上述提到的中专接口的地址,api_key代表的是我们购买的平台的通行证。 client.chat.completions.create(model, message): 创建对话,需要指定模型和问答小心内容。model仅可指定你的api_key允许的模型。

2.1 关于message参数#

message参数是一个列表,包含了三个字典变量。其格式如下:

message = [
    # 系统定位配置,可不配置。 “你是一个Python专家”告诉GPT它要做的事情
    {"role": "system", "content": "You are a expert in Python"}, 
    # 用户提问内容配置,“帮助我以颜色为条件筛选数据”,也就是输入的问题
    {"role": "user", "content": "help me filter the data by color"},
    # 助手配置,用来规范GPT回答的格式。“以这种格式回答: ‘筛选的数据:数据’”,可不配置
    {"role": "assistant", "content": "Answer in this format : 'data filtered : Your Filtered DATA' "}
]

2.2 返回值#

使用completion.choices[0].message接受返回值,completion即为在第2节开头提到的第二个函数的接收值。

它返回一个content对象,里面包含了回答内容等信息。可以转换为字典来获取返回值。

completion = client.chat.completions.create(
    model = 'my model', 
    message = myMessage
)

# 返回
print(completion.choice[0].message)

2.3 示例#

import pandas as pd
import openai
from openai import OpenAI
from tqdm import tqdm

def readFile(filepath):
    file = pd.read_csv(filepath, encoding= 'latin')
    return title_file

def dataProcess(data, answers_from_chatgpt = []):
    client = OpenAI(
        base_url="your api",
        api_key='your api key')
    for i in tqdm(range(len(data)), ncols=80, desc="chatGPT正在处理"):
        completion = client.chat.completions.create(
        model="gpt-3.5-turbo", # 指定模型
        messages=[
            {"role": "system", "content": "You are a expert in Python"},
            {"role": "user", "content": "help me filter the data by color"},
            {"role": "assistant", "content": "Answer in this format : 'data filtered : Your Filtered DATA' "}
        ])
        print(dict(completion.choices[0].message))
        answers_from_chatgpt.append(dict(completion.choices[0].message)['content'])
        
file path = 'your filepath'
answers_from_chatgpt = []
file = readFile(theme)
data = file['data'].tolist()
dataProcess(data, answers_from_chatgpt)
print(answers_from_chatgpt)
        
Python调用Openai接口实现chatGPT问答
https://blog.kimbleex.top/posts/2024-08-02-python-openai-ask/python调用openai接口实现chatgpt问答/
作者
Kimbleex
发布于
2024-08-02
许可协议
CC BY-NC-SA 4.0