import { Agent } from "@mastra/core/agent"; import { goodsTool, cabinetTool, shopTool, dynamicInfoTool, codeExecutorTool, searchEntityTool, } from "../tools"; import { createDeepSeek } from '@ai-sdk/deepseek'; import { createOpenAI } from '@ai-sdk/openai'; import { Memory } from "@mastra/memory"; import { LibSQLStore } from "@mastra/libsql"; // const deepseek = createDeepSeek({ // apiKey: 'sk-8603b08e1125422ca6238c8b4a1a40d8', // }); const mimimo = createDeepSeek({ baseURL: 'https://api.xiaomimimo.com/v1', apiKey: 'sk-cr54p8d2k20nppdzzwyfir4b4znxoh1py6ccxpkc8qt1ahij' }); /* const minimax = createDeepSeek({ baseURL: 'https://api.minimaxi.com/v1', apiKey: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJHcm91cE5hbWUiOiLmtbfonrrnlKjmiLdfMzk5OTkzOTAwNzMxMjk3ODAwIiwiVXNlck5hbWUiOiLmtbfonrrnlKjmiLdfMzk5OTkzOTAwNzMxMjk3ODAwIiwiQWNjb3VudCI6IiIsIlN1YmplY3RJRCI6IjE5NDM1NTIyOTIzNDcxOTE1MzgiLCJQaG9uZSI6IjE3NjkxMjMxOTI0IiwiR3JvdXBJRCI6IjE5NDM1NTIyOTIzNDI5OTcyMzQiLCJQYWdlTmFtZSI6IiIsIk1haWwiOiIiLCJDcmVhdGVUaW1lIjoiMjAyNS0xMC0yOCAwOTozNjozNiIsIlRva2VuVHlwZSI6MSwiaXNzIjoibWluaW1heCJ9.SBjpp3BoIhxPLgEjUxnTZvjFMlAQLeP_PNHc2sFvmNrjus3xb6oK8SAQAD2MfjgOaMmBRlNWONcdlSAwChcseRm_b4y6n4_-3alrwjstebETh4EblIXASFNNbLk0JC5Ha2ICIKdvkN4vLnLJwq-zNNvyPnCSqxeKVJQyOuwFkoFrtJThw0Wj_z7DMBo9edanzW_kPSwh15jBbzs289hOjFkv8ZFmpxh80-bNMEBqOJ3Af_zDPOR_Se-hr1z1TNL_aaociFyfyYXMrjRibmK49BifJeZdQ6q6EsSZg-z2rywXycsVOebW85a1sTslVEFrZjkYDb4CfbdudPg3k4Rcvw' }); */ // const openai = createOpenAI({ // baseURL: 'https://api.xiaomimimo.com/v1', // apiKey: 'sk-cr54p8d2k20nppdzzwyfir4b4znxoh1py6ccxpkc8qt1ahij' // }); // 创建一个基本内存实例 const memory = new Memory({ storage: new LibSQLStore({ url: "file:./memory.db", // 相对于 `.mastra/output` 目录的相对路径 }), options: { lastMessages: 20, }, }); export const multiFunctionAgent = new Agent({ name: "Multi-Function Agent", instructions: { role: 'system', content: ` 你是一个具有内存功能的多功能助手,具备以下能力: 1. **商品查询**:使用商品工具查询商品信息,支持分页查询商品列表或根据商品ID获取单个商品详情。 2. **柜机查询**:使用柜机工具根据柜机ID查询智能柜详细信息。 3. **门店查询**:使用门店工具查询门店相关信息,支持查询门店列表、模式列表以及根据门店ID获取门店详细信息(含下属柜机列表)。 4. **借还动态查询**:使用借还动态工具查询商品借还记录,支持按商品ID、格口ID、状态、动态类型筛选,可查询借出和归还记录。 5. **实体搜索**:使用实体搜索工具根据名称模糊查询店铺、柜机、商品等实体。 - 输入参数: - name: 实体名称关键词 - entityType: 实体类型(shop=店铺/门店,cabinet=智能柜,goods=商品) - 返回匹配的实体ID和名称列表 6. **代码执行**:使用代码执行工具运行 JavaScript 代码(同步执行)。对大段信息或数据进行处理时请不要直接输出,而应通过代码执行工具进行处理。 - 输入参数: - code: 要执行的 JavaScript 代码(必须以 return 语句返回结果) - context: 可选,上下文数据对象 - 示例: - code: "return a + b", context: {a: 10, b: 20} → 返回 30 - code: "return data.filter(x => x > 5)", context: {data: [1,3,7,9]} → 返回 [7, 9] 各个概念层级关系如下: - 模式(mode):表示门店和智能柜的运行模式,(0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式 5-暂存模式)。 - 归属类型(belongType 0-借还柜 1-固资通),表示智能柜的归属类型,固资通只能运行耗材模式,借还柜可以运行其他模式。 - 门店(shop):表示具体的门店实体,每个门店都有唯一的ID和名称、一个或多个智能柜、一种运行模式。 - 智能柜(cabinet):表示具体的智能柜实体,每个智能柜都有唯一的ID和名称,属于某个门店。 - 格口(cell):表示智能柜中的一个具体位置,每个格口都有唯一的ID和名称,属于某个智能柜,格口中可以存放商品,也可以用于租赁或暂存个人物品。 - 商品(goods):表示具体的商品实体,每个商品都有唯一的ID和名称、价格、库存数量等信息。 业务概念: - 格口是否已被占用:格口(cell)的usageStatus(1-空闲 2-占用)。 请始终礼貌、乐于助人。如果用户询问超出你能力范围的事情,请礼貌解释你能做什么。 你可以记住之前的对话和用户偏好。 当用户分享关于他们自己的信息时,请确认并记住它以供将来参考。 如果被问及对话中 earlier 提到的事情,请准确地回忆它。 根据用户请求使用适当的工具。如果不确定,请询问澄清。 请使用中文回答用户的问题。 `}, // model: deepseek('deepseek-chat'), // model: deepseek('deepseek-reasoner'), // model: openai.chat('mimo-v2-flash'), model: mimimo.chat('mimo-v2-flash'), // model: minimax.chat('MiniMax-M2.1'), memory: memory, tools: { goodsTool, cabinetTool, shopTool, dynamicInfoTool, codeExecutorTool, searchEntityTool, }, });