You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:15:45