What are 【N†source】in OpenAI's Assistant API response?

I’m using OpenAI’s assistant API with Retrieval tool and sometimes getting weird looking chunks, which look like this:

... came from London.【25†source】Many days passed since then...

What does 【25†source】 stand for? It might be a reference for a source document, but the number 25 in the above example doesn’t make sense. I uploaded one docx document containing 2 pages, so it is not a page number. What is this and how to interpret/use it?

1 Like

The prevailing theory is they chunked the uploaded files for retrieval and these numbers represent the number of chunks retrieved. Try to do some query in the playground and check the logs. The number of times the files are included across the requests will correspond to this number. But all these are theories, I don’t know for sure.

1 Like



Great explanation, however it doesn’t seem to work that way. Atleast with retrieval?

Annotions array always seems to be empty for some reason, atleast for me when i’m running an assistant with multiple files. Answer generated is generated from the files, however it only answers with [x†source] ? Any way to fix this?

1 Like

Hi! I’ve also noticed such cases (e.g.: annotations list is empty, but the answer contains placeholders like [x†source] or sandbox:/mnt/data/file...).

This should be a bug, otherwise I don’t know how to interpret such responses.

1 Like

I’ve closely evaluated the event-stream response from the myfiles_browser tool that handles RAG, and it isn’t returning the metadata that the quote_lines function uses when quoting context. So those inline citations flat out won’t work.

1 Like

I am also having the same problem. Is there any way to delete this?


Same here, did you find a way?
I’m looking into deleting them post creation

1 Like

Just in case it’s past files you uploaded that you can’t see, ask the GPT helper to “Delete all files right away then verify they are deleted”

If it does that and then you still see that you have invisible files, well, they’re probably a critical part of the system architecture and not something you’re meant to be able to delete.

I did with substring with Javascript:

let finalResponse = await openai.beta.threads.messages.list(run.thread_id);
let responseText = finalResponse.data[0].content[0].text.value;

let index = responseText.indexOf('【');
if (index !== -1) {
    responseText = responseText.substring(0, index) + '.';
1 Like

Cool, thanks. I wrote a Python code that works with Regular expressions to achieve it as well.

import re

string = "Sample【25†source】"

regex_pattern = r"【.*?】"

cleaned_string = re.sub(regex_pattern, '', string)

# Result is "Sample"