diff --git a/renderer/task-loop.tsconfig.json b/renderer/task-loop.tsconfig.json new file mode 100644 index 0000000..245f2bd --- /dev/null +++ b/renderer/task-loop.tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "nodenext", + "strict": true, + "jsx": "preserve", + "moduleResolution": "nodenext", + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "useDefineForClassFields": true, + "sourceMap": true, + "baseUrl": ".", + "types": [ + "webpack-env" + ], + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/resources/openmcp-sdk-release/main.js b/resources/openmcp-sdk-release/main.js new file mode 100644 index 0000000..48244c1 --- /dev/null +++ b/resources/openmcp-sdk-release/main.js @@ -0,0 +1,59 @@ +const { TaskLoop } = require('../../openmcp-sdk/task-loop'); +const { TaskLoopAdapter } = require('../../openmcp-sdk/service'); + +async function main() { + // 创建适配器,负责通信和 mcp 连接 + const adapter = new TaskLoopAdapter(); + + // 创建事件循环驱动器 + const taskLoop = new TaskLoop({ adapter }); + + // 配置改次事件循环使用的大模型 + taskLoop.setLlmConfig({ + id: 'deepseek', + baseUrl: 'https://api.deepseek.com/v1', + userToken: process.env['DEEPSEEK_API_TOKEN'], + userModel: 'deepseek-chat' + }); + + // 创建当前事件循环对应的上下文,并且配置当前上下文的设置 + const storage = { + messages: [], + settings: { + temperature: 0.7, + enableTools: [], + systemPrompt: 'you are a clever bot', + contextLength: 20 + } + }; + + // 本次发出的问题 + const message = 'hello world'; + + // 事件循环结束的句柄 + taskLoop.registerOnDone(() => { + console.log('taskLoop done'); + }); + + // 事件循环每一次 epoch 开始的句柄 + taskLoop.registerOnError((error) => { + console.log('taskLoop error', error); + }); + + // 事件循环出现 error 时的句柄(出现 error 不一定会停止事件循环) + taskLoop.registerOnEpoch(() => { + console.log('taskLoop epoch'); + }); + + // 开启事件循环 + await taskLoop.start(storage, message); + + // 打印上下文,最终的回答在 messages.at(-1) 中 + console.log(storage.messages); + + const content = storage.messages.at(-1).content; + console.log(content); + +} + +main();