Permettez aux modèles de rechercher des informations pertinentes dans vos fichiers avant de générer une réponse.
La recherche de fichiers est un outil disponible dans l’API Responses.
Elle permet aux modèles de récupérer des informations dans une base de connaissances constituée de fichiers préalablement importés, grâce à la recherche sémantique et par mots-clés.
En créant des espaces de stockage vectoriel et en y important des fichiers, vous pouvez enrichir les connaissances initiales des modèles en leur donnant accès à ces bases de connaissances, ou vector_stores.
Pour en savoir plus sur le fonctionnement des espaces de stockage vectoriel et de la recherche sémantique, consultez notre
guide de récupération.
Cet outil hébergé est géré par OpenAI : vous n’avez donc pas à écrire de code pour gérer son exécution.
Lorsque le modèle décide de l’utiliser, il appelle automatiquement l’outil, récupère des informations dans vos fichiers et renvoie un résultat.
Utilisation
Avant d’utiliser la recherche de fichiers avec l’API Responses, vous devez avoir configuré une base de connaissances dans un espace de stockage vectoriel et y avoir importé des fichiers.
Suivez ces étapes pour créer un espace de stockage vectoriel et y importer un fichier. Vous pouvez utiliser ce fichier d’exemple ou importer le vôtre.
Importez le fichier via l’API File
Importez un fichier
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34import fs from "fs";import OpenAI from "openai";const openai = new OpenAI();async function createFile(filePath) { let result; if (filePath.startsWith("http://") || filePath.startsWith("https://")) { // Download the file content from the URL const res = await fetch(filePath); const buffer = await res.arrayBuffer(); const urlParts = filePath.split("/"); const fileName = urlParts[urlParts.length - 1]; const file = new File([buffer], fileName); result = await openai.files.create({ file: file, purpose: "assistants", }); } else { // Handle local file path const fileContent = fs.createReadStream(filePath); result = await openai.files.create({ file: fileContent, purpose: "assistants", }); } return result.id;}// Replace with your own file path or URLconst fileId = await createFile( "https://cdn.openai.com/API/docs/deep_research_blog.pdf");console.log(fileId);
Ajoutez le fichier à l’espace de stockage vectoriel
Ajoutez un fichier à un espace de stockage vectoriel
Python
1
2
3
4// Use vectorStore and fileId from the earlier create and upload steps.await openai.vectorStores.files.create(vectorStore.id, { file_id: fileId,});
Une fois votre base de connaissances configurée, vous pouvez inclure l’outil file_search dans la liste des outils disponibles pour le modèle, ainsi que la liste des espaces de stockage vectoriel dans lesquels effectuer la recherche.
Outil de recherche de fichiers
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14import OpenAI from "openai";const openai = new OpenAI();const response = await openai.responses.create({ model: "gpt-6-astra", input: "What is deep research by OpenAI?", tools: [ { type: "file_search", vector_store_ids: ["<vector_store_id>"], }, ],});console.log(response);
1
2
3
4
5
6
7
8
9
10from openai import OpenAIclient = OpenAI()response = client.responses.create(model="gpt-6-astra",input="What is deep research by OpenAI?",tools=[{"type": "file_search", "vector_store_ids": ["<vector_store_id>"]}],)print(response)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18using OpenAI.Responses;#pragma warning disable OPENAI001string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;string vectorStoreId = "<vector_store_id>";ResponsesClient client = new(key);CreateResponseOptions options = new() { Model = "gpt-6-astra" };options.Tools.Add( ResponseTool.CreateFileSearchTool([vectorStoreId]));options.InputItems.Add( ResponseItem.CreateUserMessageItem("What is deep research by OpenAI?"));ResponseResult response = await client.CreateResponseAsync(options);Console.WriteLine(response.GetOutputText());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16require "openai"openai = OpenAI::Client.newresponse = openai.responses.create( model: "gpt-6-astra", input: "What is deep research by OpenAI?", tools: [ { type: "file_search", vector_store_ids: ["<vector_store_id>"] } ])puts(response)
Lorsque le modèle appelle cet outil, vous recevez une réponse contenant plusieurs éléments de sortie :
Un élément de sortie file_search_call, qui contient l’identifiant de l’appel à la recherche de fichiers.
Un élément de sortie message, qui contient la réponse du modèle ainsi que les citations des fichiers.
Réponse de la recherche de fichiers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48{"output": [ {"type": "file_search_call","id": "fs_67c09ccea8c48191ade9367e3ba71515","status": "completed","queries": ["What is deep research?"],"search_results": null }, {"id": "msg_67c09cd3091c819185af2be5d13d87de","type": "message","role": "assistant","content": [ {"type": "output_text","text": "Deep research is a sophisticated capability that allows for extensive inquiry and synthesis of information across various domains. It is designed to conduct multi-step research tasks, gather data from multiple online sources, and provide comprehensive reports similar to what a research analyst would produce. This functionality is particularly useful in fields requiring detailed and accurate information...","annotations": [ {"type": "file_citation","index": 992,"file_id": "file-2dtbBZdjtDKS8eqWxqbgDi","filename": "deep_research_blog.pdf" }, {"type": "file_citation","index": 992,"file_id": "file-2dtbBZdjtDKS8eqWxqbgDi","filename": "deep_research_blog.pdf" }, {"type": "file_citation","index": 1176,"file_id": "file-2dtbBZdjtDKS8eqWxqbgDi","filename": "deep_research_blog.pdf" }, {"type": "file_citation","index": 1176,"file_id": "file-2dtbBZdjtDKS8eqWxqbgDi","filename": "deep_research_blog.pdf" } ] } ] } ]}
Personnalisation de la récupération
Limitation du nombre de résultats
Lorsque vous utilisez l’outil de recherche de fichiers avec l’API Responses, vous pouvez définir le nombre de résultats à récupérer dans les espaces de stockage vectoriel. Cela peut contribuer à réduire à la fois la consommation de tokens et la latence, mais risque de diminuer la qualité des réponses.
Limitez le nombre de résultats
Python
1
2
3
4
5
6
7
8
9
10
11
12const response = await openai.responses.create({ model: "gpt-6-astra", input: "What is deep research by OpenAI?", tools: [ { type: "file_search", vector_store_ids: ["<vector_store_id>"], max_num_results: 2, }, ],});console.log(response);
1
2
3
4
5
6
7
8
9
10
11
12response = client.responses.create(model="gpt-6-astra",input="What is deep research by OpenAI?",tools=[ {"type": "file_search","vector_store_ids": ["<vector_store_id>"],"max_num_results": 2, } ],)print(response)
Incluez les résultats de recherche dans la réponse
Bien que des annotations (références aux fichiers) apparaissent dans le texte de sortie, l’appel à la recherche de fichiers ne renvoie pas les résultats de recherche par défaut.
Pour inclure les résultats de recherche dans la réponse, vous pouvez utiliser le paramètre include lors de la création de la réponse.
Incluez les résultats de recherche
Python
1
2
3
4
5
6
7
8
9
10
11
12const response = await openai.responses.create({ model: "gpt-6-astra", input: "What is deep research by OpenAI?", tools: [ { type: "file_search", vector_store_ids: ["<vector_store_id>"], }, ], include: ["file_search_call.results"],});console.log(response);
1
2
3
4
5
6
7
8
9
10
11
12response = client.responses.create(model="gpt-6-astra",input="What is deep research by OpenAI?",tools=[ {"type": "file_search","vector_store_ids": ["<vector_store_id>"], } ],include=["file_search_call.results"],)print(response)
Vous pouvez filtrer les résultats de recherche en fonction des métadonnées des fichiers. Pour plus de détails, consultez notre guide de récupération, qui explique :