Search code examples
openai-apigpt-3

GPT3 completion with insertion - invalid argument :suffix


I am trying out completions using insertions.

It seems that I am supposed to use a parameter called suffix: to inform where the end of the insert goes.

enter image description here

The payload to the endpoint: POST /v1/completions

{
  "model": "code-davinci-002",
  "prompt": "Write a JSON document for a person with first name, last name, email and phone number\n\n{\n",
  "suffix": "\n}",
  "temperature": 0,
  "max_tokens": 256,
  "top_p": 1,
  "frequency_penalty": 0,
  "presence_penalty": 0
}

I tried doing this from a ruby implementation of GPT3.

parameters
=> {
:model=>"code-davinci-001",
 :prompt=>"generate some JSON for a person with first and last name {",
 :max_tokens=>250,
 :temperature=>0,
 :top_p=>1,
 :frequency_penalty=>0,
 :presence_penalty=>0,
 :suffix=>"\n}"}
post(url: "/v1/completions", parameters: parameters)

I get an invalid argument error for suffix

{"error"=>{"message"=>"Unrecognized request argument supplied: suffix", "type"=>"invalid_request_error", "param"=>nil, "code"=>nil}}

Solution

  • I looked at the Payload from OpenAI vs the payload from the Ruby Library and saw the issue.

    My ruby library was setting the model to code-davinci-001 while OpenAI was using code-davinci-002.

    As soon as I manually altered the model: attribute in debug, the completion started working correctly.

    {
      "id"=>"cmpl-5yJ8b01Cw26W6ZIHoRSOb71Dc4QvH",
      "object"=>"text_completion",
      "created"=>1665054929,
      "model"=>"code-davinci-002",
      "choices"=>
      [{"text"=>"\n    \"firstName\": \"John\",\n    \"lastName\": \"Smith\"",
        "index"=>0,
        "logprobs"=>nil,
        "finish_reason"=>"stop"}],
      "usage"=>{"prompt_tokens"=>14, "completion_tokens"=>19, 
     "total_tokens"=>33}
    }