Utilisation des secrets
Ce guide montre comment utiliser TypeScript, un service de recherche tiers, et les secrets pour créer un script qui augmente des documents avec des informations provenant du web.
L’objectif est de créer un script qui augmentera un document existant avec des informations recueillies sur le web.
Recherche Tavily
Section intitulée « Recherche Tavily »Tavily est un service de recherche optimisé pour les LLM qui fournit une API REST.
L’API REST peut être invoquée en utilisant JavaScript fetch et nécessite une clé API.
Le script utilise la clé TAVILY_API_KEY
qui devra être déclarée dans le script en utilisant cette fonction.
const res = await fetch(..., { headers: { 'api_key': env.secrets.TAVILY_API_KEY }})
Nous définissons une fonction tavilySearch
en TypeScript qui encapsule l’appel fetch
et nous ajoutons des annotations de type pour offrir
une bonne expérience d’édition.
export async function tavilySearch(query: string): Promise<{ answer: string query: string results: { title: string url: string content: string score: number }[]}> { ... }
Le code source complet est le suivant :
/** * Uses the Tavily API to search for a query. * @param query question * @param apiKey API key https://docs.tavily.com/docs/tavily-api/rest_api * @returns */export async function tavilySearch(query: string): Promise<{ answer: string; query: string; results: { title: string; url: string; content: string; score: number; }[];}> { const apiKey = env.secrets.TAVILY_API_KEY; if (!apiKey) throw new Error("secret TAVILY_API_KEY is not available");
const res = await fetch("https://api.tavily.com/search", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ api_key: apiKey, query, include_answer: true, max_results: 5, }), }); const data: any = await res.json(); return data;}
Question -> Recherche -> Augmentation
Section intitulée « Question -> Recherche -> Augmentation »Le script est divisé en 3 phases :
- exécuter une invite pour générer une question basée sur le contenu du document
- utiliser Tavily pour générer une réponse à la question
- exécuter une invite pour augmenter le document avec la réponse
Le secret TAVILY_API_KEY
nécessaire pour Tavily est déclaré dans l’appel de la fonction script
.
Assurez-vous également de l’ajouter à votre fichier .env
.
script({ secrets: ["TAVILY_API_KEY"],})
La fonction tavilySearch
est importée en utilisant un import dynamique.
const { tavilySearch } = await import("./tavily.mts")const { answer } = await tavilySearch(question.text)
Le code source complet est le suivant :
script({ secrets: ["TAVILY_API_KEY"], files: "src/rag/markdown.md",});
const { tavilySearch } = await import("./tavily.mts");const file = env.files[0];
// Questionconst { text: question } = await runPrompt((_) => { const filen = _.def("FILE", file); _.$`Generate a question that summarizes the content of ${filen}`;});
// Searchconst { answer } = await tavilySearch(question);
// Augmentconst filen = def("FILE", file);const answern = def("ANSWER", answer);
$`You are an expert at writing document. Integrate the information of ${answern} into ${filen}to make it more informative.`;