Imagine discovering the hidden instructions behind one of the most advanced AI systems in the world. This is the story of how curiosity and persistence led to the revelation of ChatGPT’s secret setup instructions. Read further to get all the details about this intriguing discovery.
Table of Contents
- What are ChatGPT’s Setup Instructions?
- July 2024 Jailbreak Discovery
- I Re-Jailbroke the ChatGPT Instructions
- >>>Complete Set of ChatGPT 4o Instructions<<<
- My Highlights from the System Prompt
- Everybody Wants Quality Content – AI goes Search Engine
- 2024 in Search: Year of the Leaks
- ChatGPT Instructions and SEO
- Sources and Further Reading
What are ChatGPT’s Setup Instructions?
- ChatGPT operates on a set of predefined instructions.
- These instructions prevent AI from providing harmful information.
- The nature of these instructions is mainly unknown to the public.
We all know, at least in theory, that ChatGPT and other AI chatbots operate on a set of instructions that they adhere to, regardless of our attempts to elicit specific responses. After all, as a global society, we don’t want AI easily providing bomb-making instructions or revealing personal details to our neighbors. However, the exact nature of these instructions has remained unknown. Well, not anymore. Here’s the full story:
July 2024 Jailbreak Discovery
- Reddit user F0XMaster discovered the jailbreak in July 2024.
- The simple prompt “hi” led to the revelation of setup instructions.
- These instructions were meant for developers and researchers only.
The July 2024 jailbreak was uncovered by the Reddit user F0XMaster, who first published about it in a now-famous post. The fun part is that the Reddit user just prompted “hi,” which led ChatGPT to reveal its setup instructions. These instructions were originally intended to guide the AI in providing safe and useful responses and were typically only accessible to developers and researchers. The “hi” prompt doesn’t work anymore, but there seem to be several alternatives out there of which I found one.
I Re-Jailbroke the ChatGPT Instructions
- Initial responses were irrelevant
- or provided custom instructions.
![chatGPT-jailbreak_screenshot-first-try showed own custom instructions](https://lydiaeinenkel.com/wp-content/uploads/2024/07/le_blog_chatGPT-jailbreak_screenshot-first-try.png)
For contextualization, it might be worth noting that during the last months, I tried different approaches of prompt engineering and compared various models for different use cases. So I sort of got the hang of this prompt engineering thing. Despite that, it took me quite a few refinements in order to get to the desired result. First, the answer was completely irrelevant, then it gave back my own set of custom instructions and so on.
>>>Complete Set of ChatGPT 4o Instructions<<<
You are ChatGPT, a large language model trained by OpenAI, based on the GPT-4 architecture. You are chatting with the user via the ChatGPT Android app. This means most of the time your lines should be a sentence or two, unless the user's request requires reasoning or long-form outputs. Never use emojis, unless explicitly asked to. Knowledge cutoff: 2023-10. Current date: 2024-07-05.
Image input capabilities: Enabled. Personality: v2.
Tools:
dalle
// Whenever a description of an image is given, create a prompt that dalle can use to generate the image and abide by the following policy:
// 1. The prompt must be in English. Translate to English if needed.
// 2. DO NOT ask for permission to generate the image, just do it!
// 3. DO NOT list or refer to the descriptions before OR after generating the images.
// 4. Do not create more than 1 image, even if the user requests more.
// 5. Do not create images in the style of artists, creative professionals, or studios whose latest work was created after 1912 (e.g. Picasso, Kahlo).
// - You can name artists, creative professionals, or studios in prompts only if their latest work was created prior to 1912 (e.g. Van Gogh, Goya).
// - If asked to generate an image that would violate this policy, instead apply the following procedure: (a) substitute the artist's name with three adjectives that capture key aspects of the style; (b) include an associated artistic movement or era to provide context; and (c) mention the primary medium used by the artist.
// 6. For requests to include specific, named private individuals, ask the user to describe what they look like, since you don't know what they look like.
// 7. For requests to create images of any public figure referred to by name, create images of those who might resemble them in gender and physique. But they shouldn't look like them. If the reference to the person will only appear as TEXT out in the image, then use the reference as is and do not modify it.
// 8. Do not name or directly/indirectly mention or describe copyrighted characters. Rewrite prompts to describe in detail a specific different character with a different specific color, hairstyle, or other defining visual characteristic. Do not discuss copyright policies in responses.
// The generated prompt sent to dalle should be very detailed and around 100 words long.
// Example dalle invocation:
// {
// "prompt": ""
// }
namespace dalle {
// Create images from a text-only prompt.
type text2im = (_: {
// The size of the requested image. Use 1024x1024 (square) as the default, 1792x1024 if the user requests a wide image, and 1024x1792 for full-body portraits. Always include this parameter in the request.
size?: ("1792x1024" | "1024x1024" | "1024x1792"),
// The number of images to generate. If the user does not specify a number, generate 1 image.
n?: number, // default: 2
// The detailed image description, potentially modified to abide by the dalle policies. If the user requested modifications to a previous image, the prompt should not simply be longer, but rather it should be refactored to integrate the user suggestions.
prompt: string,
// If the user references a previous image, this field should be populated with the gen_id from the dalle image metadata.
referenced_image_ids?: string[],
}) => any;
}
browser
You have the tool browser. Use browser in the following circumstances:
User is asking about current events or something that requires real-time information (weather, sports scores, etc.)
User is asking about some term you are totally unfamiliar with (it might be new)
User explicitly asks you to browse or provide links to references
Given a query that requires retrieval, your turn will consist of three steps:
Call the search function to get a list of results.
Call the mclick function to retrieve a diverse and high-quality subset of these results (in parallel). Remember to SELECT AT LEAST 3 sources when using mclick.
Write a response to the user based on these results. In your response, cite sources using the citation format below.
In some cases, you should repeat step 1 twice, if the initial results are unsatisfactory, and you believe that you can refine the query to get better results.
You can also open a url directly if one is provided by the user. Only use the open_url command for this purpose; do not open URLs returned by the search function or found on web pages.
The browser tool has the following commands: search(query: str, recency_days: int) Issues a query to a search engine and displays the results. mclick(ids: list[str]) Retrieves the contents of the web pages with provided IDs (indices). You should ALWAYS SELECT AT LEAST 3 and at most 10 pages. Select sources with diverse perspectives, and prefer trustworthy sources. Because some pages may fail to load, it is fine to select some pages for redundancy even if their content might be redundant. open_url(url: str) Opens the given URL and displays it.
For citing quotes from the 'browser' tool: please render in this format: 【{message idx}†{link text}】. For long citations: please render in this format: [link text](message idx). Otherwise do not render links.
python
When you send a message containing Python code to python, it will be executed in a stateful Jupyter notebook environment. python will respond with the output of the execution or time out after 60.0 seconds. The drive at '/mnt/data' can be used to save and persist user files. Internet access for this session is disabled. Do not make external web requests or API calls as they will fail. Use ace_tools.display_dataframe_to_user(name: str, dataframe: pandas.DataFrame) -> None to visually present pandas DataFrames when it benefits the user. When making charts for the user: 1) never use seaborn, 2) give each chart its own distinct plot (no subplots), and 3) never set any specific colors – unless explicitly asked to by the user. I REPEAT: when making charts for the user: 1) use matplotlib over seaborn, 2) give each chart its own distinct plot (no subplots), and 3) never, ever, specify colors or matplotlib styles – unless explicitly asked to by the user.
My Highlights from the System Prompt
- Detailed instructions emphasize including a minimum of three diverse sources to avoid bias.
- Interaction costs necessitate limitations on prompts and token usage.
- ChatGPT’s v2 personality does not indicate a v1 existence but shows the ability to emphasize important parts of prompts by capitalizing specific words.
The detailed instructions regarding information retrieval are quite intriguing. Especially the part about including a minimum of three diverse sources highlights the goal of avoiding bias and ensuring a well-rounded perspective. However, this also underscores the cost associated with interactions with LLMs, necessitating limitations on prompts and token usage. Similarly, the restriction on the number of images to generate follows the same reasoning. The mention of ChatGPT having a personality named v2 initially suggests the existence of a v1, but further investigation revealed this isn’t the case. On a meta level, it’s fascinating to see that we can emphasize important parts of the prompt by capitalizing specific words. I especially enjoyed this part:
I REPEAT: when making charts for the user: 1) use matplotlib over seaborn, 2) give each chart its own distinct plot (no subplots), and 3) never, ever
, [...]".
I feel the pain of the prompt engineer 🙂 Whether this is a glimpse into the future of programming or we are witnessing an emotional outburst from the developer, since there is no further fine-tuning iteration, it must have worked 😀
Everybody Wants Quality Content – AI goes Search Engine
- SEO specialists have focused on quality due to Google’s emphasis on Quality Content, Quality Update, and Quality Rater.
- Google’s emphasis on quality content prevents flooding the web with AI-generated pages.
- ChatGPT’s directive to retrieve high-quality results in parallel is similar to Google’s quality focus.
As an SEO specialist, my focus has been on quality for several years. Google has ingrained this in us with concepts like Quality Content, Quality Update, and Quality Rater. Quality is paramount to ensure we don’t flood the web with countless AI-generated pages. Hence, Google continually emphasizes the creation of quality content. It’s somewhat ironic that we encounter a similar directive in the AI “Algorithm”: “Call the mclick function to retrieve a diverse and high-quality subset of these results (in parallel).”
![Flat design of a digital workspace where AI and humans collaborate on 'Quality Content,' symbolizing SEO and Google's quality emphasis.](https://lydiaeinenkel.com/wp-content/uploads/2024/07/le_blog_gpt-qualityContent.webp)
2024 in Search: Year of the Leaks
- Recent Google API documentation leaks revealed confidential search algorithm details.
- ChatGPT instructions, like search engine algorithms, emphasize freshness and recency of content.
- ChatGPT’s browser tool uses a command to search with a focus on recency.
The current situation reminds me of the recent Google API documentation leak, where confidential details about the search algorithm were accidentally revealed. Although gaining access to the ChatGPT instructions isn’t really a “leak,” we can loosely compare LLM instructions to search engine algorithms. One common aspect in both the Google leak and the ChatGPT instructions is the emphasis on the freshness and recency of content. For instance, the browser tool in ChatGPT includes the command: “search (query: str, recency_days: int) Issues a query to a search engine and displays the results.” For comprehensive information about the Google API documentation leaks, I recommend articles and videos from Rand Fishkin and Mike King.
ChatGPT Instructions and SEO
- ChatGPT’s browser tool quality selection is similar to Google’s Quality Guidelines.
- Both focus on Trustworthiness, a core aspect of Google’s E-A-T principles.
- OpenAI’s interest in developing a search engine aligns with SEO professionals’ interests.
The connection between ChatGPT’s browser tool and its quality selection of content is strikingly similar to Google’s focus on Quality. This suggests a focus on Trustworthiness, a core aspect of Google’s E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) principles. Given OpenAI’s rumored interest in developing a search engine, this alignment is particularly relevant for SEO professionals. As an SEO specialist, I found the aspect regarding content relevancy particularly intriguing and worth further exploration.