使用GPT-3打开AI生成更长的文本

7y4bm7vi  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(232)

我正在使用OPENAI的GPT-3API,但我很难找到一种方法来生成足够长的文本。
下面是我的代码:

import os
import openai

# export OPENAI_API_KEY='get_key_from_openai'

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
  model="text-davinci-002",
  prompt="How to choose a student loan",
  temperature=0.6,
  max_tokens=512,
  top_p=1,
  frequency_penalty=1,
  presence_penalty=1,
  n= 10
)

print(response['choices'][0]['text'])

下面是一个示例输出
在选择学生贷款时有几件事要考虑,包括利率、还款方式以及贷款是联邦贷款还是私人贷款。你还应该比较一下贷款,看看从长远来看哪种贷款花费最少。
然而,有大约50个单词,不应该接近80 - 100个标记。我还认为n参数应该运行n连续生成的文本?
有人能解释一下如何使这个生成的文本更长(理想情况下~1000个token)吗?一些huggingface模型有一个min_tokens参数,但我在那里找不到它。
多谢了

kqlmhetl

kqlmhetl1#

来自openAI文档
注意:当前没有设置最小令牌数的方法。
来源:https://help.openai.com/en/articles/5072518-controlling-the-length-of-completions
我发现的一种方法是创建一个while循环,直到生成的文本足够长...
假设我想要1000个字符,那么我的循环应该是

full_text = "How to choose a student loan ?"

while len(full_text) < 1000 :
  response = openai.Completion.create(
    model="text-ada-001",
    prompt=full_text,
    temperature=0.6,
    max_tokens=300,
    top_p=1,
    frequency_penalty=1,
    presence_penalty=1,
  )

  full_text = full_text + response['choices'][0]['text']

print(full_text)

不需要在文本之间添加'\n',因为API已经在响应中方便地添加了它们。

相关问题