Python中openai.Completion.create返回补全结果不完整的原因咨询
问题原因及解决方案
核心原因分析
- Prompt过于简洁,缺乏明确任务指令:你的
generate_prompt函数仅返回首字母大写的动物名称,没有给AI明确的生成目标(比如介绍动物特性、编写相关故事等),AI无法判断输出方向,只会生成零散或不完整的内容。 - 未配置
max_tokens参数:openai.Completion.create默认的max_tokens值有限,会限制AI生成内容的长度,导致结果被截断。
修复方案
1. 优化Prompt,明确任务指令
修改generate_prompt函数,给AI清晰的生成要求,比如生成动物的趣味科普:
def generate_prompt(animal): return f"请生成一段关于{animal.capitalize()}的趣味科普介绍,内容生动易懂:"
2. 设置合理的max_tokens参数
在调用openai.Completion.create时,增加max_tokens参数,根据需求调整输出长度:
response = openai.Completion.create( model="text-davinci-002", prompt=generate_prompt(animal), temperature=1, max_tokens=300 # 可根据需求调整数值 )
完整修改后的代码示例
import os import openai from flask import Flask, redirect, render_template, request, url_for app = Flask(__name__) openai.api_key = os.getenv("OPENAI_API_KEY") @app.route("/", methods=("GET", "POST")) def index(): if request.method == "POST": animal = request.form["animal"] response = openai.Completion.create( model="text-davinci-002", prompt=generate_prompt(animal), temperature=1, max_tokens=300 ) return redirect(url_for("index", result=response.choices[0].text.strip())) result = request.args.get("result") return render_template("index.html", result=result) def generate_prompt(animal): return f"请生成一段关于{animal.capitalize()}的趣味科普介绍,内容生动易懂:"
内容的提问来源于stack exchange,提问作者Lev
相关产品推荐
相关产品推荐

