Was ich versucht habe:
Anfangs habe ich den öffentlichen Copilot Cloud API-Schlüssel verwendet und alles hat gut funktioniert (Antworten, Daten). Lesen und Handeln).
Nach dem kostenlosen Nach Ablauf der Testphase bin ich zu einem selbstgehosteten Server-Setup mit dem LangChain-Adapter und GEMINI_API_KEY gewechselt.
Was ich will:
Ich benötige die useCopilotAction-Funktionalität (z. B. Hinzufügen von Aufgaben), um mit meinem selbst gehosteten Server zu arbeiten, genau wie mit dem öffentlichen Copilot Cloud API-Schlüssel.
Details:
Ich verwende das gemini-1.5-Flash-Modell mit einem benutzerdefinierten Server-Setup in Node.js und der Implementierung von Copilot-Aktionen über den LangChain-Adapter. Das Problem, mit dem ich konfrontiert bin, besteht darin, dass Nachrichtenantworten und lesbare Nachrichten zwar mit meinem eigenen Server-Setup unter Verwendung meines Gemini-API-Schlüssels einwandfrei funktionieren, Copilot-Aktionen jedoch nicht ausgelöst werden. Bei Verwendung des öffentlichen Copilot Cloud API-Schlüssels funktioniert alles, einschließlich Copilot-Aktionen, aber ich kann sie anscheinend nicht auf meinem benutzerdefinierten Server auslösen.
Benutzerdefiniertes Server-Setup mit gemini-1.5 -Flash-Modell mit meinem eigenen Gemini-API-Schlüssel.
Nachrichten und Antworten werden erfolgreich verarbeitet und lesbare Dateien funktionieren einwandfrei.
Copilot-Aktionen werden in meinem benutzerdefinierten Server-Setup nicht ausgelöst.
Copilot-Aktionen funktionieren wie erwartet bei Verwendung des öffentlichen Copiloten Cloud-API-Schlüssel.
Verwendung des LangChain-Adapters und der CopilotKit-Laufzeit zum Verwalten von Interaktionen.
Code: Select all
import express from "express";
import {
CopilotRuntime,
LangChainAdapter,
copilotRuntimeNodeHttpEndpoint,
} from "@copilotkit/runtime";
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
import dotenv from "dotenv";
dotenv.config();
const app = express();
const model = new ChatGoogleGenerativeAI({
model: "gemini-1.5-flash",
apiKey: process.env.GEMINI_API_KEY,
region: "us-central1",
});
const serviceAdapter = new LangChainAdapter({
chainFn: async ({ messages, tools }) => {
return model.bindTools(tools).stream(messages);
},
});
app.use("/copilotkit", (req, res, next) => {
const runtime = new CopilotRuntime();
const handler = copilotRuntimeNodeHttpEndpoint({
endpoint: "/copilotkit",
runtime,
serviceAdapter,
});
return handler(req, res, next);
});
app.listen(4000, () => {
console.log("Listening at http://localhost:4000/copilotkit");
});