Erstellen eines einfachen KI-Chatbots
Die Ki-Chatbotvorlage zeigt eine Bot-App, ähnlich wie ChatGPT, die auf Benutzerfragen antwortet und Benutzern die Interaktion mit dem KI-Bot in Microsoft Teams ermöglicht. Die KI-Bibliothek von Teams wird zum Erstellen der App-Vorlage verwendet und bietet die Funktionen zum Erstellen KI-basierter Teams-Anwendungen.
Voraussetzungen
Installieren | Zum Benutzen... |
---|---|
Visual Studio Code | JavaScript-, TypeScript- oder Python-Buildumgebungen. Verwenden Sie die neueste Version. |
Teams Toolkit | Microsoft Visual Studio Code-Erweiterung, die ein Projektgerüst für Ihre App erstellt. Verwenden Sie die neueste Version. |
Node.js | Back-End-JavaScript-Laufzeitumgebung. Weitere Informationen finden Sie unter Node.js Versionskompatibilitätstabelle für den Projekttyp. |
Microsoft Teams | Microsoft Teams für die Zusammenarbeit mit allen Personen, mit denen Sie über Apps für Chats, Besprechungen und Anrufe zusammenarbeiten, alles an einem Ort. |
Azure OpenAI | Erstellen Sie zunächst Ihren OpenAI-API-Schlüssel, um den Generative Pretrained Transformer (GPT) von OpenAI zu verwenden. Wenn Sie Ihre App hosten oder auf Ressourcen in Azure zugreifen möchten, müssen Sie einen Azure OpenAI-Dienst erstellen. |
Erstellen eines neuen einfachen KI-Chatbotprojekts
Öffnen Sie Visual Studio Code.
Wählen Sie das Teams Toolkit-Symbol in der Visual Studio Code-Aktivitätsleiste aus.
Wählen Sie Neue App erstellenaus.
Wählen Sie Benutzerdefinierter Engine-Agent aus.
Wählen Sie Grundlegende KI-Chatbots aus.
Wählen Sie JavaScript aus.
Wählen Sie Azure OpenAI aus.
Geben Sie Ihre OpenAI - oder Azure OpenAI-Anmeldeinformationen basierend auf dem ausgewählten Dienst ein. Drücken Sie die EINGABETASTE.
Wählen Sie Standardordneraus.
Führen Sie die folgenden Schritte aus, um den Standardspeicherort zu ändern:
- Wählen Sie Durchsuchen aus.
- Wählen Sie den Speicherort für den Projektarbeitsbereich aus.
- Wählen Sie Ordner auswählen aus.
Geben Sie einen Anwendungsnamen für Ihre App ein, und drücken Sie dann die EINGABETASTE.
Sie haben ihren Ki-Chat-Bot-Projektarbeitsbereich erfolgreich erstellt.
Wechseln Sie unter EXPLORER zur Datei env.env.testtool.user>.
Aktualisieren Sie die folgenden Details:
SECRET_AZURE_OPENAI_API_KEY=<your-key>
AZURE_OPENAI_ENDPOINT=<your-endpoint>
AZURE_OPENAI_DEPLOYMENT_NAME=<your-deployment>
Klicken Sie zum Debuggen Ihrer App auf F5 oder im linken Bereich auf Ausführen und Debuggen (STRG+UMSCHALT+D) und dann in der Dropdownliste auf Debuggen im Testtool (Vorschau).
Das Testtool öffnet den Bot auf einer Webseite.
Machen Sie einen Überblick über den Quellcode der Bot-App
Ordner | Inhalt |
---|---|
.vscode |
Visual Studio Code-Dateien zum Debuggen. |
appPackage |
Vorlagen für das Teams-Anwendungsmanifest. |
env |
Umgebungsdateien. |
infra |
Vorlagen für die Bereitstellung von Azure-Ressourcen. |
src |
Der Quellcode für die Anwendung. |
teamsapp.yml |
Dies ist die Standard Teams Toolkit-Projektdatei. Die Projektdatei definiert zwei Hauptbegriffe: Eigenschaften und Definitionen der Konfigurationsphase. |
teamsapp.local.yml |
Dies wird mit Aktionen überschrieben teamsapp.yml , die die lokale Ausführung und das Debuggen ermöglichen. |
teamsapp.testtool.yml |
Dies wird mit Aktionen überschrieben teamsapp.yml , die die lokale Ausführung und das Debuggen im Teams App Test Tool ermöglichen. |
src/index.js |
Richtet den Bot-App-Server ein. |
src/adapter.js |
Richtet den Botadapter ein. |
src/config.js |
Definiert die Umgebungsvariablen. |
src/prompts/chat/skprompt.txt |
Definiert die Eingabeaufforderung. |
src/prompts/chat/config.json |
Konfiguriert die Eingabeaufforderung. |
src/app/app.js |
Verarbeitet Geschäftslogiken für den einfachen KI-Chatbot. |
Funktionsweise des Teams KI-Chatbots
Die KI-Bibliothek von Teams bietet wie folgt einen Flow zum Erstellen eines intelligenten Chatbots mit KI-Funktionen:
TurnContext: Das Turn-Kontextobjekt stellt Informationen zur Aktivität bereit, z. B. den Absender und Empfänger, den Kanal und andere Daten, die zum Verarbeiten der Aktivität erforderlich sind.
TurnState: Das Turn-Zustandsobjekt, ähnlich wie ein Cookie, speichert Daten für den aktuellen Durchlauf. Dieses Objekt wird als Turn-Kontext durch die gesamte Anwendungslogik übertragen, einschließlich der Aktivitätshandler und des KI-Systems.
Authentifizierung: Wenn die Benutzerauthentifizierung konfiguriert ist, versucht Teams KI, den Benutzer anzumelden. Wenn der Benutzer bereits angemeldet ist, ruft das SDK das Zugriffstoken ab und fährt fort. Andernfalls initiiert das SDK den Anmeldeflow und beendet den aktuellen Durchlauf.
Aktivitätshandler: Die KI-Bibliothek von Teams führt eine Reihe von registrierten Aktivitätshandlern aus, sodass Sie verschiedene Arten von Aktivitäten verarbeiten können. Das Aktivitätshandlersystem ist die primäre Methode zum Implementieren von Bot- oder Nachrichtenerweiterungs-App-Logik. Es handelt sich um eine Reihe von Methoden und Konfigurationen, mit denen Sie Rückrufe registrieren können, die als Routenhandler bezeichnet werden und basierend auf der eingehenden Aktivität ausgelöst werden. Die eingehende Aktivität kann in Form einer Nachricht, einer Nachrichtenreaktion oder praktisch einer beliebigen Interaktion innerhalb der Teams-App erfolgen.
KI-System: Das KI-System in der KI-Bibliothek von Teams ist für das Moderieren von Eingaben und Ausgaben, das Generieren von Plänen und deren Ausführung verantwortlich. Sie kann als eigenständiges Objekt verwendet oder vom App-Objekt an weitergeleitet werden. Die folgenden wichtigen Konzepte sind:
- Eingabeaufforderungs-Manager: Eingabeaufforderungen spielen eine entscheidende Rolle bei der Kommunikation und Der Lenkung des Verhaltens von KI mit großen Sprachmodellen (Large Language Models, LLMs).
- Planner: Der Planer empfängt die Anforderung des Benutzers in Form einer Aufforderungs- oder Eingabeaufforderungsvorlage und gibt einen Plan zurück, um sie zu erfüllen. Dies wird erreicht, indem ki verwendet wird, um atomische Funktionen zu mischen und abzugleichen, die als Aktionen bezeichnet werden, die im KI-System registriert sind. Diese Aktionen werden in eine Reihe von Schritten zusammengefasst, die ein Ziel erreichen.
- Aktionen: Eine Aktion ist eine atomische Funktion, die im KI-System registriert ist.
AfterTurn-Handler: Nachdem der Aktivitätshandler oder das KI-System ausgeführt wurde, führt die Teams KI-Bibliothek einen Handler aus
afterTurn
. Mit dem Handler können Sie nach dem Durchlauf eine Aktion ausführen. Wenn es alstrue
zurückgibt, speichert das SDK den Turn-Zustand im Speicher.Reagieren auf Benutzer: Die KI-Bibliothek von Teams speichert den Zustand, und der Bot kann die Antworten an den Benutzer senden.
Anpassen eines einfachen KI-Chatbots
Sie können Anpassungen auf der Basis-App hinzufügen, um komplexe Szenarien wie folgt zu erstellen:
Eingabeaufforderung anpassen: Eingabeaufforderungen spielen eine entscheidende Rolle bei der Kommunikation und Der Lenkung des Verhaltens von LLMs KI. Sie dienen als Eingaben oder Abfragen, die Benutzer bereitstellen können, um bestimmte Antworten aus einem Modell zu erhalten. Hier ist eine Eingabeaufforderung, die den LLM nach Namensvorschlägen auffordert:
Anforderung
Give me 3 name suggestions for my pet golden retriever.
Antwort
Some possible name suggestions for a pet golden retriever are: - Bailey - Sunny - Cooper
Um das mit dem Teams Toolkit generierte Projekt zu verwenden, können Sie die Eingabeaufforderungen in der
src/prompts/chat/skprompt.txt
Datei erstellen. Die in dieser Datei geschriebenen Eingabeaufforderungen werden in die Eingabeaufforderung eingefügt, die zum Anweisen des LLM verwendet wird. Die Teams KI-Bibliothek definiert die folgende Syntax, die Sie im Eingabeaufforderungstext verwenden können:{{ $[scope].property }}
: Die Teams KI-Bibliothek rendert den Wert einer Eigenschaft, die innerhalb des Turnzustands definiert ist. Es definiert drei solcher Bereiche: temp, user und conversation. Wenn kein Bereich angegeben ist, verwendet die Bibliothek standardmäßig den temporären Bereich.Die
{{$[scope].property}}
wird wie folgt verwendet:Definieren Sie in der
src/app/turnState.ts
Datei Den temporären Zustand, den Benutzerzustand, den Konversationszustand und den App-Turnstatus. Wenn dieturnState.ts
Datei in Ihrem Projekt nicht vorhanden ist, erstellen Sie sie untersrc/app
.import { DefaultConversationState, DefaultTempState, DefaultUserState, TurnState } from "@microsoft/teams-ai"; export interface TempState extends DefaultTempState { } export interface UserState extends DefaultUserState { } export interface ConversationState extends DefaultConversationState { tasks: Record<string, Task>; } export interface Task { title: string; description: string; } export type ApplicationTurnState = TurnState<ConversationState, UserState, TempState>;
Verwenden Sie in der Datei den
src/app/app.ts
App-Turn-Zustand, um die App zu initialisieren.const storage = new MemoryStorage(); const app = new Application<ApplicationTurnState>({ storage, ai: { planner, }, });
Verwenden Sie in der
src/prompts/chat/skprompt.txt
Datei die bereichsbezogene Zustandseigenschaft, z. B{{$conversation.tasks}}
. .
Anpassen der Benutzereingabe: Mit der KI-Bibliothek von Teams können Sie die an LLM gesendete Eingabeaufforderung erweitern, indem Sie die Benutzereingaben einschließen. Wenn Sie Benutzereingaben einschließen, müssen Sie sie in einer Eingabeaufforderungskonfigurationsdatei angeben, indem Sie in
src/prompts/chat/config.json
auftrue
festlegencompletion.include_input
. Sie können optional auch die maximale Anzahl von Benutzereingabetoken insrc/prompts/chat/config.json
konfigurieren, indem Sie änderncompletion.max_input_tokens
. Dies ist nützlich, wenn Sie die Länge von Benutzereingaben begrenzen möchten, um eine Überschreitung des Tokengrenzwerts zu vermeiden.Anpassen des Unterhaltungsverlaufs: Das SDK verwaltet automatisch den Konversationsverlauf, und Sie können sie wie folgt anpassen:
src/prompts/chat/config.json
Konfigurieren Siecompletion.include_history
in . Gibttrue
an, wird der Verlauf in die Eingabeaufforderung eingefügt, damit LLM den Konversationskontext erkennt.Maximale Anzahl von Verlaufsmeldungen. Konfigurieren Sie
max_history_messages
beim Initialisieren vonPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_history_messages: 3, });
Maximale Anzahl von Verlaufstoken. Konfigurieren Sie
max_conversation_history_tok
ens beim Initialisieren vonPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_conversation_history_tokens: 1000, });
Anpassen des Modelltyps: Sie können ein bestimmtes Modell für eine Eingabeaufforderung verwenden. Konfigurieren Sie
completion.model
in dersrc/prompts/chat/config.json
Datei . Wenn für die Eingabeaufforderung kein Modell konfiguriert ist, wird das inOpenAIModel
konfigurierte Standardmodell verwendet.Die Modelle, die das SDK wie folgt unterstützen:
Modell Unterstützt gpt-3.5-turbo Unterstützt gpt-3.5-turbo-16k Unterstützt gpt-3.5-turbo-instruct Von 1.1.0 nicht unterstützt gpt-4 Unterstützt gpt-4-32k Unterstützt gpt-4-vision Unterstützt gpt-4-turbo Unterstützt DALL· E Nicht unterstützt Flüstern Nicht unterstützt TTS Nicht unterstützt Anpassen von Modellparametern:
Konfigurieren Sie in der
src/prompts/chat/config.json
Datei die Modellparameter, die abgeschlossen sind, wie folgt:- Max_tokens: Die maximale Anzahl von Token, die generiert werden sollen.
- Temperatur: Die Temperatur wird als Zahl zwischen 0 und 2 modelliert.
-
Top_p: Die Modelle
top_p
als Zahl zwischen 0 und 2. -
Presence_penalty: Die Modelle
presence_penalty
als Zahl zwischen 0 und 1. -
Frequency_penalty: Die Modelle
frequency_penalty
als Zahl zwischen 0 und 1. - Stop_sequences: Array von Stoppsequenzen, die beim Treffer die Generierung beenden.