Permettez aux modèles de rechercher des informations pertinentes dans vos fichiers avant de générer une réponse.
La recherche dans les fichiers est un outil de l’API Responses.
Elle permet aux modèles de retrouver des informations dans une base de connaissances constituée de fichiers déjà importés, grâce à la recherche sémantique et à la recherche par mots-clés.
En créant des bases vectorielles et en y important des fichiers, vous pouvez enrichir les connaissances des modèles en leur donnant accès à ces bases de connaissances, appelées vector_stores.
Pour en savoir plus sur le fonctionnement des bases vectorielles et de la recherche sémantique, consultez notre
guide de la recherche d’informations.
OpenAI héberge et gère cet outil. Vous n’avez donc aucun code à écrire 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 dans les fichiers avec l’API Responses, créez une base de connaissances dans une base vectorielle et importez-y vos fichiers.
Suivez ces étapes pour créer une base vectorielle et y importer un fichier. Vous pouvez utiliser ce fichier d’exemple ou importer le vôtre.
Importez le fichier via l’API File
Importation d’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);
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 prête, vous pouvez ajouter l’outil file_search à la liste des outils accessibles au modèle et préciser la liste des bases vectorielles à interroger.
Outil de recherche dans les 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, la réponse contient plusieurs éléments de sortie :
Un élément file_search_call qui contient l’identifiant de l’appel à l’outil de recherche dans les fichiers.
Un élément message qui contient la réponse du modèle et les références aux fichiers cités.
Réponse à une recherche dans les 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 recherche
Limitez le nombre de résultats
Avec l’outil de recherche dans les fichiers de l’API Responses, vous pouvez choisir le nombre de résultats à récupérer dans les bases vectorielles. Limiter ce nombre peut réduire la consommation de tokens et la latence, mais aussi la qualité des réponses.
Limitation du 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
Le texte de sortie peut contenir des annotations qui renvoient aux fichiers, mais l’appel à l’outil de recherche dans les fichiers ne renvoie pas les résultats de recherche par défaut.
Pour inclure les résultats de recherche dans la réponse, utilisez le paramètre include lors de la création de la réponse.
Inclusion des 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 selon les métadonnées des fichiers. Pour plus de détails, consultez notre guide de la recherche d’informations, qui explique :