Ermögliche Modellen, deine Dateien nach relevanten Informationen zu durchsuchen, bevor sie eine Antwort generieren.
Die Dateisuche ist ein Tool der Responses API.
Damit können Modelle Informationen aus einer Wissensbasis zuvor hochgeladener Dateien mithilfe semantischer Suche und Stichwortsuche abrufen.
Indem du Vektorspeicher erstellst und Dateien darin hochlädst, kannst du das vorhandene Wissen der Modelle ergänzen: Du gibst ihnen Zugriff auf diese Wissensbasen, auch vector_stores genannt.
Mehr darüber, wie Vektorspeicher und die semantische Suche funktionieren, erfährst du in unserem
Leitfaden zum Informationsabruf.
Dieses Tool wird von OpenAI gehostet und verwaltet. Du musst daher keinen eigenen Code für seine Ausführung implementieren.
Wenn das Modell entscheidet, es zu verwenden, ruft es das Tool automatisch auf, ruft Informationen aus deinen Dateien ab und gibt ein Ergebnis zurück.
Verwendung
Bevor du die Dateisuche mit der Responses API verwenden kannst, musst du eine Wissensbasis in einem Vektorspeicher einrichten und Dateien darin hochladen.
Gehe wie folgt vor, um einen Vektorspeicher zu erstellen und eine Datei darin hochzuladen. Du kannst diese Beispieldatei verwenden oder eine eigene hochladen.
Die Datei in die File API hochladen
Eine Datei hochladen
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,});
Sobald deine Wissensbasis eingerichtet ist, kannst du das Tool file_search in die Liste der für das Modell verfügbaren Tools aufnehmen und die Liste der zu durchsuchenden Vektorspeicher angeben.
Tool zur Dateisuche
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)
Wenn das Modell dieses Tool aufruft, erhältst du eine Antwort mit mehreren Ausgabeelementen:
Ein Ausgabeelement vom Typ file_search_call, das die ID des Dateisuche-Aufrufs enthält.
Ein Ausgabeelement vom Typ message, das die Antwort des Modells samt Quellenverweisen auf die Dateien enthält.
Antwort der Dateisuche
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" } ] } ] } ]}
Informationsabruf anpassen
Anzahl der Ergebnisse begrenzen
Wenn du das Tool zur Dateisuche mit der Responses API verwendest, kannst du festlegen, wie viele Ergebnisse aus den Vektorspeichern abgerufen werden sollen. Dadurch lassen sich Tokenverbrauch und Latenz reduzieren, allerdings kann die Qualität der Antworten darunter leiden.
Anzahl der Ergebnisse begrenzen
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)
Du kannst die Suchergebnisse anhand der Metadaten der Dateien filtern. Weitere Informationen findest du in unserem Leitfaden zum Informationsabruf. Dort erfährst du: