ChatGPT API - 创建大于 gpt-3.5-turbo 令牌限制的更长 JSON 响应

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

我有一些 ChatGPT API 的用例,我不知道如何处理。

我正在创建Python应用程序,我有一个方法可以创建带有一些指令和一些数据的请求,以便为ChatGPT重写。它看起来像这样(指令和数据只是本示例中的一些示例):

openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    temperature=0.6,
    messages=[
        {
            "role": "system",
            "content": """
                You are journalist who creates title and article content based on 
                the provided data. You also choose category from list: World, 
                Technology, Health and create 3 tags for article. 
                Your response is always just JSON which looks like this example 
                structure:
                {
                    "title": {{insert created title}},
                    "category": {{insert category}}
                    "content": {{insert article content}}
                    "tags": {{insert tags as list of strings}}
                }
            """
        },
        {
            "role": "user",
            "content": """
                Title and article content to rewrite:
                title: {}
                content: {}
            """.format(title, content)
        }
    ]
)

提供的文章内容可能非常长,如果是这样并且达到模型限制,那么我的响应有时是好的 JSON,创建的内容非常短,有时它只是损坏的 JSON,因为由于令牌限制,内容尚未完成。

我已尝试将响应传递给另一个请求,但仍达到限制。

python openai-api chatgpt-api
2个回答
2
投票

尝试为 GPT 提供一个缩小的 JSON 示例,即

{"role":"user","content":""} 

而不是

{
"role": "user",
"content": ""
}

这样,GPT 就不会因为给你不必要的空格和换行符而吃掉代币。

否则,请按字段属性分解 JSON 并发出单独的完成请求。一旦你分别取回每个属性,你就可以自己形成正确的 JSON 对象。

最后一个选项:使用 GPT-4


0
投票

很好的解决方法,但仍然没有解决无状态 API 调用一旦达到令牌限制就无法继续的问题。如果没有明确的方法来调用 API get 第 1 部分、第 2 部分、第 3 部分等,那么这对于 API 使用来说将是一个巨大的障碍。尤其是在响应中期望 JSON,如果第 1 部分以标记 4,096 结尾,并且它没有正确的结束字符,JSON 读取器会炸掉。

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