GPT API Function Calling String Escaping Escapades

Occasionally the API doesn’t encode double quotes in string parameters thus tripping up my JSON decoder. On other occasions it escapes something that doesn’t need to be escaped, like an asterisk:

Asterisk escaped, although that’s not legal.

{
"correction": "Sprich mit deinem Partner, deiner Partnerin, Freund\*innen und deiner Hebamme darüber.",
"reason": "Keine Änderung erforderlich."
}

Double-Quotes not escaped:

{
  "correction": "Ingwer, ob in Stückchen oder als Tee genossen, ist ein bewährtes Heilmittel. Ebenso ein trockenes Stück Brot, Toast oder Zwieback.",
  "reason": "Der Satz "Ingwer, ob in Stückchen oder als Tee genossen, ist ein bewährtes Heilmittel, ebenso ein trockenes Stück Brot, Toast oder Zwieback." ist grammatikalisch korrekt. Es wurden keine Änderungen vorgenommen."
}

Another case of double-quote:

{
"correction": "Mit der Zeit wirst du ein gutes Gefühl dafür entwickeln, welche Größe dein Baby benötigt und welche Kleidung euch gut passt.",
"reason": "Euch" wird hier verwendet, da es sich auf dich und dein Baby bezieht."
}
1 Like

Almost like you need a third AI on standby to do a “identify and fix the bad escaping that exists in this AI-generated JSON”

2 Likes

What prompt are you using @oliver.drobnik?

I have found that simply mentioning “valid JSON” instead of “JSON” in the prompt improves the performance.

2 Likes

This is the typical request:

POST https://api.openai.com/v1/chat/completions

{
  "model" : "gpt-4-0613",
  "messages" : [
    {
      "content" : "You are an experienced native German proof reader. You will correct texts preserving markdown formatting, links and images. Prefer terse responses and never create any new texts.",
      "role" : "system"
    },
    {
      "content" : "Redigiere den folgenden Satz. Wenn Änderungen nötig sind, dann führe sie aus. Ansonsten melde `OK`\n\n```\nWie rasch du dich wieder sportlich betätigst, hängt auch ein wenig davon ab, ob du einen Babysitter\/eine Oma hast, die in der Zwischenzeit auf dein Kind aufpassen kann.\n```",
      "role" : "user",
      "name" : "Writer"
    }
  ],
  "functions" : [
    {
      "name" : "performEdit",
      "description" : "Performs an edit by replacing the original markdown text with the correction. Avoid double quotes in string parameters.",
      "parameters" : {
        "type" : "object",
        "properties" : {
          "correction" : {
            "type" : "string",
            "description" : "The corrected markdown text"
          },
          "reason" : {
            "type" : "string",
            "description" : "The editor's notes \/ explanation of why the change was necessary. Please use German."
          }
        },
        "required" : [

        ]
      }
    }
  ]
}

Kind of wrecks my brainwave of promoting the job to GPT-4 upon error if you are already using GPT-4…

1 Like

Had a similar problem as well.

Sometimes it produced:

{ "criteria-xy-score": 90%

I’ve solved it by changing my one shot example to

{ "criteria-xy-score-in-percent": 90

In your example I’d tell the model to use ALT + 0130 and ALT + 0145 for quotation marks:

{
"correction": "Mit der Zeit wirst du ein gutes Gefühl dafür entwickeln, welche Größe dein Baby benötigt und welche Kleidung euch gut passt.",
"reason": "„Euch“ wird hier verwendet, da es sich auf dich und dein Baby bezieht."
}
3 Likes