Как я могу сгенерировать многострочное завершение с помощью OpenAI API?

Я пытаюсь сгенерировать код, используя OpenAI API, используя OpenAI-API-dotnet, и понял, что многострочная генерация, похоже, не работает должным образом даже для предоставленного кода Python.

Детская площадка

Текст

      Q: generate a standard model for Foo
A: public class Foo
{
    public int Id { get; set; } 
    public DateTime DateCreation { get; set; }
    public DateTime? DateModification { get; set; }
    public int User { get; set; }
    public bool Archive { get; set; }
}
Q: generate a standard model for Bar
A: public class Bar
{
    public int Id { get; set; }
    public DateTime DateCreation { get; set; }
    public DateTime? DateModification { get; set; }
    public int User { get; set; }
    public bool Archive { get; set; }
}
Q: generate a standard model for MyNewModel

Генерируется движком Кюри (davinci будет генерировать ближе к тому, что я хочу)


Параметры

      Temperature = 0
Top P = 1
Frequency Penalty = 0
B|est Of = 1
Stop Sequences = `A` and `Q`
Inject Start Text = A
Inject Restart Text = Q

Код

(это автоматически создается с использованием кода экспорта, предоставленного фоном)

      import os
import openai

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

start_sequence = "\nA:"
restart_sequence = "\nQ:"

response = openai.Completion.create(
  engine="curie",
  prompt="Q: generate a standard model for Foo\nA: public class Foo\n{\n    public int Id { get; set; } \n  public DateTime DateCreation { get; set; }\n    public DateTime? DateModification { get; set; }\n   public int User { get; set; }\n public bool Archive { get; set; }\n}\nQ: generate a standard model for Bar\nA: public class Bar\n{\n    public int Id { get; set; }\n   public DateTime DateCreation { get; set; }\n    public DateTime? DateModification { get; set; }\n   public int User { get; set; }\n public bool Archive { get; set; }\n}\nQ: generate a standard model for MyNewModel\nA: public class MyNewModel\n{\n  public int Id { get; set; }\n   public DateTime DateCreation { get; set; }\n    public DateTime? DateModification { get; set; }\n}\n\nQ:",
  temperature=0,
  max_tokens=1024,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0,
  stop=["A:", "Q:"]
)

Запуск этого кода возвращает следующий ответ:

      {                                                          
  "choices": [                                             
    {                                                      
      "finish_reason": "stop",                             
      "index": 0,                                          
      "logprobs": null,                                    
      "text": " generate a standard model for MyNewModel\n"
    }                                                      
  ],                                                       
  "created": 1622274844,                                   
  "id": "cmpl-34o5E2ORQwxxggF4FdwNGqvZDjRhO",              
  "model": "curie:2020-05-03",                             
  "object": "text_completion"                              
}     

Итак, существует разница между тем, как игровая площадка и экспортируемый код обрабатывают новые строки, и я не могу понять, как многострочный текст может быть правильно загружен и извлечен из OpenAI API.

Ответ содержит только первую строку того, что я ожидаю:

      " generate a standard model for MyNewModel\n"

в отличие от того, что я получаю на детской площадке, который представляет собой многострочный ответ:

      A: public class MyNewModel
{
    public int Id { get; set; }
    public DateTime DateCreation { get; set; }
    public DateTime? DateModification { get; set; }
}

Q:

Есть идеи, как это сделать?

0 ответов

Другие вопросы по тегам