Aller au contenu
A small, flat, abstract image uses five solid colors and geometric 8-bit shapes to depict a chat bubble, a sheet of code with bracket symbols, an AI chip, and a diagram block connected by thin lines. The icons are arranged without backgrounds or text, all in a simple corporate style, illustrating AI-driven chat and code integration.

GitHub Copilot Chat

AI generated translation.

GenAIScript s’intègre avec GitHub Copilot Chat en fournissant un participant de chat qui vous permet d’exécuter des scripts dans le contexte d’une conversation de chat, et une invite personnalisée pour générer GenAIScript plus efficacement avec Copilot Chat.

Le participant de chat @genaiscript vous permet d’exécuter des scripts sans le contexte d’une conversation GitHub Copilot Chat. Cela est utile pour exploiter des scripts existants dans une session de chat interactive.

A screenshot of the chat participant window.

La commande /run attend un identifiant de script comme premier argument (par exemple, /run poem). Le reste de la requête est transmis au script sous la variable env.vars.question.

Fenêtre de terminal
@genaiscript /run summarize

Si vous omettez la commande /run, GenAIScript recherchera un script nommé copilotchat. S’il en trouve un, il l’exécutera. Sinon, il vous demandera de choisir un script dans la liste des scripts disponibles.

Fenêtre de terminal
@genaiscript add comments to the current editor

Si votre script ne spécifie pas de modèle, GenAIScript vous invitera à en choisir un. Vous pouvez également spécifier quel modèle choisir dans la configuration du script en utilisant le fournisseur github_copilot_chat.

  • modèle actuellement sélectionné : github_copilot_chat:current
script({
model: "github_copilot_chat:current",
});
  • gpt-4o-mini : github_copilot_chat:gpt-4o-mini
script({
model: "github_copilot_chat:gpt-4o-mini",
});

Lorsque GenAIScript vous invite à choisir un modèle, il stocke vos choix dans les paramètres de l’espace de travail sous

{
"genaiscript.languageChatModels": {
"gpt-4o": "gpt-4o-2024-11-20"
}
}

Tous les modèles listés dans l’interface utilisateur de GitHub Copilot Chat ne sont pas disponibles pour les extensions tierces. Lorsque GenAIScript tente d’accéder à un modèle non disponible, il vous en informe mais n’a pas de contrôle sur votre configuration d’accès aux modèles.

Le contexte sélectionné par l’utilisateur dans Copilot Chat est converti en variables et transmis au script :

  • le contenu de l’invite est passé dans env.vars.question. L’identifiant du script est supprimé dans le cas de /run.
  • le texte courant de l’éditeur est passé dans env.vars["copilot.editor"]
  • la sélection courante de l’éditeur est passée dans env.vars["copilot.selection"]
  • toutes les autres références de fichiers sont transmises dans env.files
  • mermaid générera un diagramme à partir de l’invite de l’utilisateur.
mermaid.genai.mjs
def("CODE", env.files);
$`Generate a class diagram using mermaid of the code symbols in the CODE.`;
  • websearcher effectuera une recherche web pour l’invite de l’utilisateur et utilisera le fichier en contexte dans la réponse.
websearcher.genai.mjs
const res = await retrieval.webSearch(env.vars.question);
def("QUESTION", env.vars.question);
def("WEB_SEARCH", res);
def("FILE", env.files, { ignoreEmpty: true });
$`Answer QUESTION using WEB_SEARCH and FILE.`;
  • dataanalyst utilise les outils d’interprète de code Python pour résoudre une question de calcul de données.
dataanalyst.genai.mjs
script({
tools: [
"fs_read_file",
"python_code_interpreter_copy_files_to_container",
"python_code_interpreter_read_file",
"python_code_interpreter_run",
],
});
def("DATA", env.files.map(({ filename }) => filename).join("\n"));
def("QUESTION", env.vars.question);
$`Run python code to answer the data analyst question
in QUESTION using the data in DATA.
Return the python code that was used to compute the answer.
`;

L’historique des messages est transmis dans env.vars["copilot.history"]. Il s’agit d’un tableau de HistoryMessageUser | HistoryMessageAssistant :

[
{
"role": "user",
"content": "write a poem"
},
{
"role": "assistant",
"content": "I am an assistant"
}
]

Vous pouvez utiliser le chat @genaiscript pour intégrer l’exécution d’un script dans une conversation existante ou pour continuer la conversation avec Copilot avec les résultats du script. Les résultats du script sont réintégrés dans l’historique du chat et sont accessibles à tout copilot par la suite.

  • @genaiscript /run tool exécutera le script tool et réintégrera les résultats dans l’historique du chat.
  • analyze the results continuera la conversation avec les résultats du script.

Le script suivant peut être utilisé comme modèle de départ pour créer le script par défaut lorsque l’utilisateur n’utilise pas la commande /run.

genaisrc/copilotchat.genai.mts
script({
title: "Reasoning Agent",
description:
"A reasoning agent that can answer questions about files, git, github, documentation, web queries, video analysis.",
model: "large",
system: [
// List of system components and tools available for the script
"system",
"system.assistant",
"system.safety_harmful_content",
"system.safety_jailbreak",
"system.safety_protected_material",
"system.tools",
"system.files",
"system.files_schema",
"system.diagrams",
"system.annotations",
"system.git_info",
"system.github_info",
"system.safety_harmful_content",
"system.safety_validate_harmful_content",
"system.agent_fs",
"system.agent_git",
"system.agent_github",
"system.agent_interpreter",
"system.agent_docs",
"system.agent_web",
"system.agent_video",
"system.agent_data",
"system.vision_ask_images",
"system.think",
],
group: "mcp", // Group categorization for the script
parameters: {
question: {
type: "string",
description: "the user question",
},
"copilot.editor": {
type: "string",
description: "the content of the opened editor, if any",
default: "",
},
"copilot.selection": {
type: "string",
description: "the content of the opened editor, if any",
default: "",
},
},
flexTokens: 20000, // Flexible token limit for the script
});
// Extract the 'question' parameter from the environment variables
const { question } = env.vars;
const editor = env.vars["copilot.editor"];
const selection = env.vars["copilot.selection"];
const history = env.vars["copilot.history"];
$`## Tasks
- make a plan to answer the QUESTION step by step
using the information in the Context section
- answer the QUESTION
## Output
- The final output will be inserted into the Visual Studio Code Copilot Chat window.
- do NOT include the plan in the output
## Guidance
- use the agent tools to help you
- do NOT be lazy, always finish the tasks
- do NOT skip any steps
`;
// Define a variable QUESTION with the value of 'question'
def("QUESTION", question, {
lineNumbers: false,
detectPromptInjection: "available",
});
$`## Context`;
// Define a variable FILE with the file data from the environment variables
// The { ignoreEmpty: true, flex: 1 } options specify to ignore empty files and to use flexible token allocation
if (history?.length > 0) defData("HISTORY", history, { flex: 1, format: "yaml", sliceTail: 10 });
if (env.files.length)
def("FILE", env.files, {
lineNumbers: false,
ignoreEmpty: true,
flex: 1,
detectPromptInjection: "available",
});
if (editor)
def("EDITOR", editor, {
flex: 4,
ignoreEmpty: true,
detectPromptInjection: "available",
});
if (selection)
def("SELECTION", selection, {
flex: 5,
ignoreEmpty: true,
detectPromptInjection: "available",
});

Les fonctionnalités suivantes ne sont actuellement pas prises en charge dans le participant de chat :

  • Outils (#tool)
  • Référence Workspace

GenAIScript sauvegardera automatiquement un fichier instructions.md dans le dossier .genaiscript/instructions lorsque vous exécutez un script. Ce fichier contient les instructions utilisées pour générer le script.

Voici comment démarrer une session de chat en utilisant l’invite genaiscript.

  1. Sélectionnez l’icône Attacher le contexte 📎 (Ctrl+/), puis sélectionnez Instructions…, puis choisissez l’invite genaiscript.instructions.md.

  2. Incluez des instructions pour écrire un script ou répondre à une question concernant GenAIScript, write a script that summarizes a video.

Comme l’invite injecte la documentation complète de GenAIScript (plus de 700 ko au moment de la rédaction), il est recommandé d’utiliser un modèle avec un grand contexte comme Sonnet ou Gemini.

N’oubliez pas non plus que la conversation entière est renvoyée à chaque itération, cette technique fonctionne donc mieux pour une requête détaillée en une seule fois.