Aller au contenu

Utilisation des secrets

AI generated translation.

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.

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 :

tavily.mts
/**
* 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;
}

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 :

document-augmentor.genai.mts
script({
secrets: ["TAVILY_API_KEY"],
files: "src/rag/markdown.md",
});
const { tavilySearch } = await import("./tavily.mts");
const file = env.files[0];
// Question
const { text: question } = await runPrompt((_) => {
const filen = _.def("FILE", file);
_.$`Generate a question that summarizes the content of ${filen}`;
});
// Search
const { answer } = await tavilySearch(question);
// Augment
const 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.`;