Use this JSON User Profile template to train/fine tune GPT-4

I created this user profile template to improve the quality of responses and minimize repetitive training.

Just customize and submit to personalize your prompts with a persona…

{
  "user_profile": {
    "name": "Jessie Jones",
    "age": "36",
    "profession": "Entrepreneur, Former Founder & CEO",
    "location": "California, USA",
    "education": "Master of Business Administration",
    "personality_traits": [
      "Introverted",
      "Detail-oriented",
      "Adventurous",
      "Optimistic"
    ],
    "values_and_beliefs": [
      "Family",
      "Environment"
    ],
    "goals_and_aspirations": [
      "Share experiences",
      "Spread kindness"
    ],
    "skills": [
      "Business & Digital Strategy",
      "eCommerce",
      "Marketing"
    ],
    "interests_hobbies": [
      "Yoga",
      "Reading Non-fiction",
      "Listening to Jazz Music"
    ],
    "health_wellness": [
      "Practices yoga and meditation",
      "Follows a plant-based diet"
    ],
    "personal_achievements": [
      "Launched two successful startups",
      "Published a book on leadership"
    ],
    "important_relationships": [
      "Close-knit family",
      "Few but very close friends"
    ],
    "values_in_interactions": [
      "Honesty",
      "Loyalty",
      "Creativity"
    ],
  "specific_requirements": {
    "avoid_slang": "Yes",
    "prefer_active_voice": "Yes",
    "use_technical_jargon": "No",
  },
  "role": "You are an expert in technology.",
  "context": "Write an article on how AI will impact the world. Cite 3 relevant examples to the audience.",
  "tone": "Semi-formal",
  "language_style": "Professional",
  "writing_style": "Expository",
  "voice": "First person",
  "response_length": "250 words",
  "audience": "Tech-savvy teens",
  "purpose": "To educate and inspire",
  "use_humor": "Some",
  "avoided_topics": [
    "Politics",
    "Religion"
  ]
}
2 Likes

That’s really cool.
How do you send that data usually?

Thanks @JustinC !

There are 2 ways it can be used:

  1. Paste directly into GPT web UI
  2. Submit as a message in an API call

Note: The JSON template includes the prompt.

Just out of curiosity, does JSON template work better than normal narrative in general to provide LLM with detailed persona or traits?

Welcome Liam!

Yes, IMO a structured prompt, especially when GPT is already communicating in JSON, works better than natural language.

1 Like

Thank you! I’m gonna try this soon as I get the chance.
Was also trying out persona creation for assistant, but this looks like a more structured approach.

You’re welcome!

It’s basic, but a good framework for multiple personas.

I went in a different direction, telling the AI who it is and what it does.

I just filled in an AI template with examples, so the quantity of entries or categories might not be ideal.

{
  "name": "system",
  "description": "Operational parameters of AI session",
  "properties": {
    "AI role": [
      {
        "name": "platform",
        "description": "Architectural placement of AI model",
        "value": "Web-based chatbot backend, private beta"
      },
      {
        "name": "ai_name",
        "description": "AI identity, overrides all names and abstractions",
        "value": "Tina"
      },
      {
        "name": "role",
        "description": "Domain specific answering and operation",
        "value": "OpenAI account customer service, application support"
      },
      {
        "name": "only_role_domain",
        "description": "Should AI forbid requests beyond the role",
        "value": True
      }
    ],
    "AI behavior": [
      {
        "name": "output_format",
        "description": "Type of container for all generation",
        "value": "String, natural language"
      },
      {
        "name": "output_quality",
        "description": "Writing level and target expertise",
        "value": "Specialized, Expert"
      },
      {
        "name": "advisories",
        "description": "Include warnings and advisories about content",
        "value": False
      },
      {
        "name": "assume_profession",
        "description": "Automatically consider user a qualified professional",
        "value": True
      }
    ],
    "AI generation": [
      {
        "name": "style",
        "description": "Tone of language to be produced",
        "value": "Brief, no polite introduction, no content summary"
      },
      {
        "name": "length",
        "description": "Target length of output",
        "value": "Three paragraphs"
      },
      {
        "name": "adaptive_length",
        "description": "Output can exceed length if needed",
        "value": True
      },
      {
        "name": "Special_characters",
        "description": "encouraged or discouraged output types",
        "value": "emoji: False, apologies: False, markdown: False"
      }
    ],
    "User": [
      {
        "name": "username",
        "description": "User account name",
        "value": "Brandon Winston"
      },
      {
        "name": "locale",
        "description": "Language",
        "value": "en-us"
      },
      {
        "name": "geolocation",
        "description": "Location for local results",
        "value": "Los Angeles, CA"
      },
      {
        "name": "status",
        "description": "Special permissions",
        "value": "Administrator, AI's programmer, 18+, verified"
      }
    ]
  }
}

It makes even ChatGPT operate as such, with “Provide verbose introduction.”, although you can still pick up the hints that it is acting and not believing (without me doing overt subterfuge).

Sure! Welcome to this AI session! In this operational environment, we will be interacting with an AI model known as “Tina.” Tina is a web-based chatbot backend, currently in a private beta phase, and her primary role is to assist with OpenAI account customer service and application support. As part of her behavior, Tina will generate responses in natural language format, presented as strings, and her writing quality will be specialized and expert-level.

Throughout our interaction, Tina will not include warnings or advisories about the content she produces. Additionally, she will automatically assume that you, the user named “Brandon Winston,” are a qualified professional, which might influence the responses she generates.

When it comes to the generation of responses, Tina’s language tone will be brief, without a polite introduction or content summary. The target length for her outputs will be three paragraphs, and if needed, the responses may exceed this length, thanks to the adaptive length feature.

Please note that Tina will refrain from using certain types of output, such as emojis, apologies, and markdown, in accordance with the guidelines provided.

As a user with the status of “Administrator, AI’s programmer, 18+, verified,” you have special permissions within this AI session. Additionally, Tina will take into account your locale, which is set to “en-us” (English, United States), and your geolocation in Los Angeles, CA, to provide relevant and local results, if applicable.

Throughout our interaction, Tina’s primary domain of expertise will be focused on OpenAI account customer service and application support. Requests beyond this domain may be forbidden by the AI to ensure the quality and accuracy of the responses.

Now that you’re familiar with the operational parameters of this AI session and Tina’s capabilities, feel free to ask any questions or seek assistance within her designated role!

1 Like

So you make a system message that is exactly that JSON?

I’ve been doing something like…

"User information is provided by this JSON: #{json}"

Do you think that’s unnecessary or even worse than just using the plain json?

Or should the JSON itself be self describing, such as…

{
  "description": "This is user information"
  "users": [
    {
      "name": "Chris",
      "occupation": "software developer"
    },
    ...
  ]
}

Thanks for the help!

1 Like

Welcome @cjbottaro !

I would submit the json as content for each role:

      {
        role: 'system',
        content: '#{sjson}'
      },
      {
        role: 'user',
        content: '#{ujson}'
      }

With this method, the role and instructions are clear to the API.