@copilotkit/runtime
Version:
<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />
38 lines (36 loc) • 1.38 kB
JavaScript
import "reflect-metadata";
import { __require } from "../../../_virtual/_rolldown/runtime.mjs";
import { randomId, randomUUID } from "@copilotkit/shared";
//#region src/service-adapters/experimental/ollama/ollama-adapter.ts
const DEFAULT_MODEL = "llama3:latest";
var ExperimentalOllamaAdapter = class {
get name() {
return "OllamaAdapter";
}
constructor(options) {
this.provider = "ollama";
if (options?.model) this.model = options.model;
else this.model = DEFAULT_MODEL;
}
async process(request) {
const { messages, actions, eventSource } = request;
const { Ollama } = __require("@langchain/community/llms/ollama");
const ollama = new Ollama({ model: this.model });
const contents = messages.filter((m) => m.isTextMessage()).map((m) => m.content);
const _stream = await ollama.stream(contents);
eventSource.stream(async (eventStream$) => {
const currentMessageId = randomId();
eventStream$.sendTextMessageStart({ messageId: currentMessageId });
for await (const chunkText of _stream) eventStream$.sendTextMessageContent({
messageId: currentMessageId,
content: chunkText
});
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
eventStream$.complete();
});
return { threadId: request.threadId || randomUUID() };
}
};
//#endregion
export { ExperimentalOllamaAdapter };
//# sourceMappingURL=ollama-adapter.mjs.map