Permita que os modelos pesquisem informações relevantes nos seus arquivos antes de gerar uma resposta.
A pesquisa em arquivos é uma ferramenta disponível na API Responses.
Ela permite que os modelos recuperem informações de uma base de conhecimento formada por arquivos enviados anteriormente, usando pesquisa semântica e pesquisa por palavras-chave.
Ao criar repositórios vetoriais e enviar arquivos para eles, você pode complementar o conhecimento dos modelos dando a eles acesso a essas bases de conhecimento, chamadas vector_stores.
A OpenAI hospeda e gerencia a ferramenta, então você não precisa escrever código para executá-la.
Quando o modelo decide usá-la, ele chama a ferramenta automaticamente, recupera informações dos seus arquivos e retorna um resultado.
Como usar
Antes de usar a pesquisa em arquivos com a API Responses, você precisa configurar uma base de conhecimento em um repositório vetorial e enviar arquivos para ele.
Siga estas etapas para criar um repositório vetorial e enviar um arquivo para ele. Você pode usar este arquivo de exemplo ou enviar um arquivo seu.
Envie o arquivo para a API de arquivos
Enviar um arquivo
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,});
Depois de configurar a base de conhecimento, você pode incluir a ferramenta file_search na lista de ferramentas disponíveis para o modelo e fornecer a lista de repositórios vetoriais em que ele deve pesquisar.
Ferramenta de pesquisa em arquivos
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)
Quando o modelo chama a ferramenta, você recebe uma resposta com vários itens de saída.
Um item do tipo file_search_call, que contém o ID da chamada de pesquisa em arquivos.
Um item do tipo message, que contém a resposta do modelo e as referências aos arquivos citados.
Resposta da pesquisa em arquivos
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" } ] } ] } ]}
Como personalizar a recuperação de informações
Limitar o número de resultados
Ao usar a ferramenta de pesquisa em arquivos com a API Responses, você pode definir quantos resultados deseja recuperar dos repositórios vetoriais. Limitar esse número pode reduzir o uso de tokens e a latência, mas também pode diminuir a qualidade da resposta.
Limitar o número de resultados
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)
Você pode ver anotações (referências a arquivos) no texto de saída, mas, por padrão, a chamada de pesquisa em arquivos não retorna os resultados da pesquisa.
Para incluir os resultados da pesquisa na resposta, use o parâmetro include ao criar a resposta.
Incluir os resultados da pesquisa
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)
Você pode filtrar os resultados da pesquisa com base nos metadados dos arquivos. Consulte nosso guia de recuperação de informações para saber mais sobre os tópicos a seguir.