为什么我的Python脚本没有调用GPT-3.5-turbo API?

问题描述 投票:0回答:1

情况

我的Python脚本编译并成功运行。它创建输出文件 (edited.txt),但不会向该文件写入任何内容。 API 仪表板显示没有使用情况,所以我猜测脚本从未成功调用 API。但是,我没有收到任何错误代码。

目标:

我正在编写一个 Python 脚本来从文件中读取文本块。文本块由两部分组成;一个提示,然后是一个 2,000 个令牌(大约)的文本正文。然后该脚本应该将该文本块传递给 OpenAI API 并将响应写入名为“edited.txt”的文件

目的:

我正在帮助 100 Devs 训练营将他们的视频脚本转换为 HTML 文档,以便盲人和视障人士可以浏览视频脚本。我已经编写了三个 Python 脚本......

  • 去掉时间戳
  • 根据标记计数将文本分割成块(使用 TikToken)
  • 将相同的提示附加到每个段落的开头

此脚本的目的是在我手动编辑和添加 HTMl 格式之前对原始转录文本进行第一次编辑。

示例输入:

(这是输入到此脚本的文本文件内容的示例)

格式:

提示文本:原始转录文本

提示文本:原始转录文本

示例:

担任软件开发人员。您的工作是修改以下文本以使其更具可读性,同时保留任何代码语法:我们回来了,又做了一次,又做了一次。我们走吧。仅手指。嗨,早上好。下午好。晚上好。无论你来自哪里。希望你们一切都好。欢迎大家回来。 ...

担任软件开发人员。您的工作是修改以下文本以使其更具可读性,同时保留任何代码语法:如果您从未接触过代码,那么很多这样的东西一开始可能会是一种真正的折磨。所以我们这里有来自各个领域的人。我们已经有人喜欢构建全栈应用程序,他们来这里是为了学习有助于他们找到工作的东西。 ...

源代码:

from flask import Flask, request, redirect, url_for, render_template
import os
from dotenv import load_dotenv
import openai
import json

load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
MODEL_ENGINE = "gpt-3.5-turbo"

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            data = file.read().decode('utf-8')
            blocks = data.split('\n\n')
            edited_text = ''

            for block in blocks:
                try:
                    response = openai.chat.completions.create(
                        model=MODEL_ENGINE,
                        messages=[{"role": "user", "content": block}],
                        max_tokens=4000,
                    )
                    edited_text += response.choices[0].text.strip() + '\n\n'
                except Exception as e:
                    print(f"An error occurred: {e}")

            with open('edited.txt', 'w', encoding='utf-8') as f:
                f.write(edited_text)
            

    return render_template('upload.html')

if __name__ == '__main__':
    app.run(debug=True, port=8080)

备注:

这是我第一次访问OpenAI API。而且我是盲人,所以访问调试器很棘手。从我可以访问的内容中,我听到 GET 和 POST 请求的 200 响应代码。但我可能无法访问某些内容。

非常感谢您提供的任何帮助!

我尝试过的:

  1. 阅读所有可用的 OpenAI 文档

  2. 检查终端中的 Flask 事件(全部返回 200)

  3. 尝试在 VS Code 中使用 Copilot

  4. 已验证的 .env 文件与格式正确的 API 密钥位于同一目录中。

  5. 检查 API 仪表板以验证密钥是否处于活动状态、具有权限并且显示没有使用情况

  6. 已验证的脚本正在按预期创建输出文件,但未写入它。

python openai-api text-processing chatgpt-api
1个回答
0
投票

我也是 GPT 新手,但是在我这边运行您的代码时,我收到错误“选择对象没有属性文本”

edited_text += response.choices[0].text.strip() + '\n\n'

所以我用

替换了代码
edited_text += response.choices[0].message.content.strip() + '\n\n'

我也没有从 request.files 访问文件,而是这样做了

file = "Hi I am the text if you read this message please respond with I red you message \n\n Hi I am the text if you read this message please respond with I red your 2nd Message"
    if file:
        data = file
        blocks = data.split('\n\n')
        edited_text = ''

代码现在运行良好,没有任何错误。

openai.chat.completions.create 方法是为基于聊天的交互量身定制的。它旨在维护一系列消息的上下文,使其适合创建对话式人工智能。因此,如果您不打算构建对话 AI,请使用以下代码

response = client.completions.create(
  model="gpt-3.5-turbo-instruct",
  prompt="Write a tagline for an ice cream shop."
)

这是一个很好的做法

© www.soinside.com 2019 - 2024. All rights reserved.