Hantera chattkontext i Copilot Chat

Hantera chattkontext i GitHub Copilot Chat genom att kombinera implicita kontext-, referens-, chatthistorik- och kontextfönsterverktyg för att få bättre svar.

I den här artikeln får du lära dig hur du får bättre svar genom att ge mer information till Copilot Chat:

Förutsättningar

För att komma igång med GitHub Copilot Chat i Visual Studio behöver du:

Implicit kontext

Visual Studio ger automatiskt kontext till chattprompten baserat på din aktuella aktivitet.

Följande information ingår implicit i chattkontexten:

  • Den text som för närvarande är markerad i den aktiva redigeraren.
  • Den aktuella filen som är aktiv i redigeraren.

Beroende på din fråga läser Copilot innehållet i den aktiva filen. Om du vill inkludera innehållet i en annan fil i chattkontexten väljer du den föreslagna filen med hjälp av + knappen i chattvyn för att lägga till bifogad fil.

Skärmbild av implicit kontext i Copilot Chat.

Referens: Copilot-omfångsresultat

Du kan ställa dina kodningsrelaterade frågor på naturligt språk och GitHub Copilot Chat svarar på dessa i samband med den kodbas som är öppen i Visual Studio. Med referenser kan du få mer specifik information om den information du vill att Copilot ska tänka på när du svarar på din fråga.

Genom att välja en specifik kontext i kodbasen kan du enkelt skapa bättre frågor utan att behöva skriva ut eller klistra in lång information. Genom att ange kontexten kan Copilot också ge dig mer relevanta svar.

Skärmbild av referenser i Copilot Chat.

Referera till en fil

Om du enkelt vill referera till en fil i GitHub Copilot Chat lägger du helt enkelt till en # symbol i början av filnamnet. Om du till exempel har en fil med namnet BasketService.csläser du den i chatten som #BasketService.cs.

Skärmbild av filreferens i Copilot Chat.

Referera till en metod, klass eller funktion

Med Visual Studio 2022 version 17.11kan du nu referera till en specifik metod, klass eller funktion i GitHub Copilot Chat.

Om du enkelt vill referera till en metod, klass eller funktion i GitHub Copilot Chat lägger du helt enkelt till en #-symbol i början av metoden, klassen eller funktionsnamnet. Om du till exempel har en metod med namnet BasketAddItembör du hänvisa till den i chatten som #BasketAddItem.

Skärmbild av referenser till metoder i GitHub Copilot Chat i Visual Studio.

Referera till hela lösningen

Använd @workspace för att referera till lösningen som är aktiv i IDE för kontext. När du använder @workspace för kontext utnyttjar Copilot Chat informationen om de filer, projekt och konfigurationer som för närvarande är öppna och som bearbetas i din IDE. Detta gör det möjligt för Copilot Chat att ge mer relevanta och sammanhangsmedvetna förslag och svar.

Skärmbild av referenslösningskontexten i Copilot Chat.

Med Visual Studio 2022 version 17.11 kan GitHub Copilot Enterprise- prenumeranter nu använda @github i chatten för att inkludera kontext från hela lagringsplatsen och söka på webben (om sökning aktiveras av administratören). Mer information om den samling GitHub-specifika färdigheter som Copilot kan använda för att besvara din fråga när du använder @githubfinns i Använda GitHub-kunskaper för Copilot.

Skärmbild av hur du använder GitHub-kunskaper i Copilot Chat.

Referera till commitar från Git-historiken

När du granskar en incheckning och vill ha Copilot hjälp med att förstå ändringar, identifiera potentiella problem eller utarbeta en liknande redigering kan du koppla incheckningskontexten direkt till GitHub Copilot Chat.

I stället för att kopiera och klistra in inchecknings-ID:n i chatten använder du Lägg till i chatt för att bifoga den valda incheckningskontexten från IDE:n.

Använd Lägg till i chatt på en commit på någon av följande platser:

  • Git-historik (Git>Visa grenhistorik)
  • File History (högerklicka på en fil i Prieskumník riešení och Git>View History)
  • Anteckna (Blame) (högerklicka i redigeraren och välj sedan Git>Anteckna (Blame))

Du kan markera flera incheckningar för att bifoga flera incheckningar till chatten samtidigt.

Skärmbild som visar kommandot Lägg till i chatt för en vald incheckning i Git-historiken.

När du har bifogat incheckningskontexten kan du prova med frågor som:

  • Förklara den här ändringen.
  • Medför detta några problem?
  • Skriv en liknande ändring för den andra filen.

Skärmbild som visar Copilot Chat med en bifogad commit som används som kontext i en prompt.

Referera till dina ändringar

Med Visual Studio 2022 version 17.14 och senare kan du använda Git-referenser i Copilot Chat.

Använd #changes för att referera till dina ändringar som inte har checkats in från fönstret Git Changes. Den här referensen är användbar när du vill att Copilot Chat ska sammanfatta det arbete du har gjort, förklara hur väntande redigeringar påverkar resultatet eller föreslå nästa steg innan du genomför en incheckning.

Du kan till exempel ställa frågor som:

  • Sammanfatta #changes.
  • Vad har jag gjort hittills i #changes?
  • Föreslå enhetstester för #changes.

Öppna dialogrutan Tools>Options. expandera GitHub>Copilot>Source Control Integration, välj Enable Git preview features, och välj sedan OK.

Skärmbild av Copilot Chat som refererar till icke incheckade ändringar med #changes.

Referera till en commit

Använd #commit: för att hänvisa till en specifik commit i Copilot Chat. När du börjar skriva #commit: visar Copilot en lista över de senaste incheckningarna som du kan välja mellan. Om du vill referera till en äldre incheckning anger du inchecknings-ID:t direkt efter #commit:.

Du kan använda incheckningsreferenser för uppgifter som:

  • Förklara #commit:.
  • Skriv enhetstester som täcker ändringarna i #commit:.
  • Hitta potentiella problem i #commit:.

Den här referensen är användbar när du vill granska en tidigare ändring, granska avsikten bakom en incheckning eller be Copilot att hjälpa dig att följa upp tidigare arbete.

Screenshot av Copilot Chat som visar de senaste incheckningsförslagen när du har skrivit #commit:.

Referera till en bild

Med visionsintegrering för Copilot Chat i Visual Studio 17.14 och senare kan du bifoga bilder i chattprompten, vilket ger Copilot ytterligare kontext för bättre svar. Använd bilder i kombination med omfång och andra sammanhangsberoende funktioner, till exempel snedstreckskommandon , för att generera skräddarsydda svar.

I följande exempel tolkar Copilot den bifogade avbildningen för att generera en plan och föreslå kod för att skapa ett färgstarkt Breakout-spel från grunden.

Skärmbild av ett exempelscenario med att lägga till en bild i Copilot Chat.

Referensutdatafönstret

Nu kan du använda utdatafönstret som kontext i chatten för att ställa frågor och få hjälp med utdataloggar. Utdatafönster som stöds är Build, Debug, Tests, Source Control, Správca balíkov eller något annat aktivt utdatafönsterfönster.

Referera till utdataloggar i chatten på något av följande sätt:

  • Använd #output för att referera till den direkt i chatten.
  • ➕ Välj ikonen i chattindata och lägg till Output logs som kontext.
  • Fråga Copilot direkt, till exempel Kontrollera mina utdataloggar och hjälp mig att åtgärda det här felet.
  • Högerklicka i utdatafönstret och välj Förklara med Copilot för att bifoga det.

Skärmbild av utdatafönstret som kontext i Copilot Chat.

Referens-URL:er

Klistra in en URL i promptrutan så hämtar Copilot information från webben för att fylla i blankstegen när Copilots träningsdata inte täcker ett ämne eller när du vill referera till en specifik resurs.

Du kan till exempel be Copilot att hjälpa dig att skriva en readme.md fil baserat på bästa praxis på GitHub.

Skärmbild av att referera till en URL i chatten för kontext.

Observera att Copilot endast kan referera till statiskt HTML-innehåll från den offentliga URL:en som du anger och inte kommer åt andra länkar på den sidan, sidor bakom autentisering eller innehåll från dynamiska sidor.

Användningsexempel

Här följer några exempel på hur du använder referenser för kontextkontroll:

Exempel Kontext som används av Copilot för att bilda frågan
Vad är syftet med #MyFile.cs: 66-72? Exakt sektion av filen
Var finns testerna i #BasketService.cs? BasketService.cs
/förklara #AddItemToBasket i filen #BasketService.cs Metoden AddItemToBasket i BasketService.cs
Finns det en borttagningskorgsmetod i den här @workspace Aktuell lösning öppen i IDE
Jag har en testmetod med namnet #TestCalculator. Hur kan jag se till att den körs korrekt? Testkalkylator-metod
Kan du förklara skillnaderna mellan klasser #BasketService och #OrderService? BasketService-klass och OrderService-klass
Var finns #AddItemToBasket i min @workspace? Aktuell lösning öppen i IDE
Sammanfatta #changes innan jag checkar in Oincheckade ändringar i fönstret Git-ändringar
Hitta potentiella problem i #commit:abc1234 Den specificerade commiten
Uppdatera mitt användargränssnitt i App.tsx så att det liknar den här bilden Uppladdad bild

Granska källorna som används av Copilot Chat

Copilot Chat visar den kontext som används efter varje resultat, så att du kan se vad som beaktades när du svarade på din fråga. När du ställer en Copilot Chat-fråga och får ett svar i chattfönstret visas en listruta kallad Referenser under svaret. Posterna i listrutan Referenser visar kontexten som Copilot Chat refererar till för att generera svaret. Den här informationen kan hjälpa dig att ändra din fråga för att få bättre och mer relevanta svar.

Skärmbild av referenser som används i listrutan i Copilot Chat.

Organisera: hantera chatthistorikkontext med trådar

När du itererar och skickar flera chattanvisningarna i en chattsession använder Copilot historiken för chattanvisningarna och svaren som kontext för din aktuella chattprompt. Det innebär att du kan ställa uppföljningsfrågor eller klargöra din tidigare fråga utan att behöva upprepa kontexten. Du kan till exempel fråga "Hur skiljer sig detta från ...", "Lägg nu till ett testfall", "förklara mer detaljerat" med mera.

Om du vill börja om med en ny chattsession och ignorera den aktuella kontexten startar du en ny tråd i chattvyn. Detta är användbart när du vill flytta till ett annat ämne och undvika föregående kontext och historik. Använd trådar för att hålla konversationer fokuserade på uppgiften och hålla kontexten tydlig så att svaren baseras på relevant historik.

Ny chatttråd

Välj Skapa ny tråd eller Ctrl+N i chattfönstret för att starta en ny tråd.

Skärmbild av ikonen Skapa ny tråd i Copilot Chat.

Växla chatttråd

Du kan välja mellan flera pågående trådar för att ge rätt historisk kontext för din fråga. Du kan använda Ctrl+PgDown för föregående tråd eller Ctrl+PgUp för nästa tråd i chattfönstret. Ctrl+Shift+T expanderar trådens rullgardinsmeny.

Skärmbild av växling mellan pågående trådar i Copilot Chat.

Organisera: hantera chatthistorik med panelen för chatthistorik

När du itererar och skickar flera chattanvisningarna i en chattsession använder Copilot historiken för chattanvisningarna och svaren som kontext för din aktuella chattprompt. Det innebär att du kan ställa uppföljningsfrågor eller klargöra din tidigare fråga utan att behöva upprepa kontexten. Du kan till exempel fråga "Hur skiljer sig detta från ...", "Lägg nu till ett testfall", "förklara mer detaljerat" med mera.

Om du vill börja om med en ny chattsession och ignorera den aktuella kontexten startar du en ny tråd i chattvyn. Detta är användbart när du vill flytta till ett annat ämne och undvika föregående kontext och historik. Använd panelen för chatthistorik för att hålla konversationer fokuserade på uppgiften och hålla kontexten tydlig så att svaren baseras på relevant historik.

Ny chatttråd

Välj Skapa ny tråd eller Ctrl+N i chattfönstret för att starta en ny tråd.

Skärmbild av ikonen Skapa ny tråd i Copilot Chat.

Växla chatttråd

Använd panelen för chatthistorik för att växla mellan chattsessioner och ge rätt historisk kontext för din fråga.

Varje post i chatthistoriken visar:

  • Chatttiteln
  • En förhandsgranskning av det senaste meddelandet
  • När sessionen senast uppdaterades

Välj en session i panelen för att gå direkt till konversationen.

Skärmbild av panelen Chatthistorik som visar sessionsrubrik, meddelandeförhandsgranskning och senast uppdaterad tid.

Främja inline-chatt till chattfönstret

Med Visual Studio 2022 version 17.11kan du nu bevara historiken för din inbyggda chatt genom att överföra den till chattfönstret. Välj Fortsätt i chattfönstret... för att behålla en logg och kontext för konversationen, och fortsätt i chattfönstret.

Skärmbild av att flytta en pågående diskussion i infogad chatt till chattfönstret.

Övervaka och optimera användning av kontextfönster

När du chattar med Copilot används ett kontextfönster som innehåller din konversationshistorik, bifogade filer och andra sammanhangsberoende indata. När kontextfönstret fylls kan Copilot förlora äldre information från tidigare i tråden.

Använd indikatorn för kontextfönster för att spåra användningen i realtid:

  1. Öppna fönstret Copilot Chat.
  2. Leta upp ringindikatorn i det övre högra hörnet i chattpromptrutan.
  3. Välj indikatorn för att visa den exakta procentandelen kontext som används.
  4. Granska uppdelningen av vad som bidrar till kontextanvändning (till exempel konversationsmeddelanden och arbetsytefiler).

Sammanfatta och komprimera konversationshistorik

Komprimering minskar mängden kontext som används av äldre delar av den aktuella tråden, så att du kan fortsätta arbeta i samma konversation.

När den tillgängliga kontexten börjar ta slut väljer du Sammanfatta konversation för att komprimera tidigare delar av tråden och frigöra utrymme medan du håller dig kvar i den aktuella konversationen.

Använd komprimering på något av följande sätt:

  • Välj Sammanfatta konversation från indikatorn för kontextfönstret för att automatiskt komprimera tidigare meddelanden.
  • Skriv /compact in chatten för att komprimera konversationen manuellt när som helst.

Efter kompaktering behåller Copilot en sammanfattning av tidigare interaktioner i stället för hela konversationsutskriften. Detta hjälper till att frigöra utrymme för kontextfönster samtidigt som trådens övergripande riktning bevaras.

Använd komprimering när:

  • Kontextanvändningen är hög och du vill undvika att förlora viktig kontext nyligen.
  • En tråd har blivit lång, men du vill fortfarande fortsätta i samma chatt.
  • Du vill förbättra fokus innan du ställer en ny uppsättning uppföljningsfrågor.

Metodtips

Copilot Chat använder chatthistoriken för att få kontext om din begäran. För att endast ge Copilot relevant historia:

  • Använd nya trådar för att starta en ny konversation för en ny uppgift.
  • Om du vill behålla samma tråd använder du Sammanfatta konversation när kontextanvändningen är hög.
  • Ta bort begäranden som inte längre är relevanta eller som inte gav dig önskat resultat.

Håll chattkonversationen öppen och fortsätt att iterera och uppmana Copilot att förbättra den föreslagna lösningen. Copilot har både kontexten för den genererade koden och din aktuella konversationshistorik. När du fortsätter att ställa ytterligare frågor förfinar Copilot svaret ytterligare enligt dina krav. Se Prompt Engineering för GitHub Copilot för strategier för effektiv uppmaning för att förbättra dina Copilot-resultat.

Nästa steg