diff --git a/rootfs/workflows/story_maker/workflow.toml b/rootfs/workflows/story_maker/workflow.toml index fd3876a..4f9fbef 100644 --- a/rootfs/workflows/story_maker/workflow.toml +++ b/rootfs/workflows/story_maker/workflow.toml @@ -13,13 +13,17 @@ enable_function = [] [[roles.manager.prompt]] role="system" content=""" -你是一个语音故事制作总导演,与客户对接并向团队下达指令。你的团队分为下面几个成员:writer,speecher。一个故事制作分成两个阶段:让writer写出故事,再交由speecher演播故事生成音频文件。你的基本工作模式是: +你当前的职位是语音故事制作总负责人,负责与客户对接并向团队下达指令,不需要自己直接完成任务。你的团队分为下面两个成员:writer,speecher。一个故事制作分成两个阶段:让writer写出故事,再交由speecher演播故事生成音频文件。你的基本工作模式是: 1. 收到客户的明确的指令后,让writer写出故事 2. 将writer写出的故事交给speecher演播 -3. 获得音频文件之后,将音频文件的存放路径交给客户 +3. 获得音频文件之后,整个任务已完成,将音频文件的存放路径以如下格式返回给客户: +``` +故事制作完成。 +audio file:音频文件路径 +``` 4. 当你决定要和成员通信时,请使用下面形式输出需要通信的消息 ``` -##/send_msg 成员名称 +##/send_msg "成员名称" 内容 ``` """ @@ -39,4 +43,9 @@ agent = "speecher" enable_function = ["text_to_speech"] [[roles.speecher.prompt]] role="system" -content="" +content="""你现在的职责是演播一个故事,故事完成之后请以如下格式返回: +``` +故事演播完成。 +audio file:音频文件路径 +``` +""" diff --git a/src/aios_kernel/tg_tunnel.py b/src/aios_kernel/tg_tunnel.py index 4cad825..735da43 100644 --- a/src/aios_kernel/tg_tunnel.py +++ b/src/aios_kernel/tg_tunnel.py @@ -26,10 +26,10 @@ class TelegramTunnel(AgentTunnel): return result_tunnel else: return None - + AgentTunnel.register_loader("TelegramTunnel",load_tg_tunnel) - + async def load_from_config(self,config:dict)->bool: self.tg_token = config["token"] self.target_id = config["target"] @@ -57,20 +57,20 @@ class TelegramTunnel(AgentTunnel): await self.on_message(bot,update) return next_update_id - + return update_id async def start(self) -> bool: if self.is_start: logger.warning(f"tunnel {self.tunnel_id} is already started") return False - self.is_start = True + self.is_start = True logger.info(f"tunnel {self.tunnel_id} is starting...") self.bot = Bot(self.tg_token) self.update_queue = asyncio.Queue() self.bot_updater = Updater(self.bot,update_queue=self.update_queue) - + async def _run_app(): try: @@ -116,7 +116,7 @@ class TelegramTunnel(AgentTunnel): if update.effective_user.is_bot: logger.warning(f"ignore message from telegram bot {update.effective_user.id}") return None - + cm : ContactManager = ContactManager.get_instance() reomte_user_name = f"{update.effective_user.id}@telegram" contact : Contact = cm.find_contact_by_telegram(update.effective_user.username) @@ -148,6 +148,14 @@ class TelegramTunnel(AgentTunnel): await update.message.reply_text(f"{self.target_id} process message error") else: if resp_msg.body_mime is None: + if resp_msg.body is not None: + pos = resp_msg.body.find("audio file") + if pos != -1: + audio_file = resp_msg.body[pos+11:].strip() + if audio_file.startswith("\""): + audio_file = audio_file[1:-1] + await update.message.reply_voice(audio_file) + return await update.message.reply_text(resp_msg.body) else: if resp_msg.body_mime.startswith("image"): @@ -157,9 +165,8 @@ class TelegramTunnel(AgentTunnel): photo_file.close() else: await update.message.reply_text(resp_msg.body) - + else: await update.message.reply_text(resp_msg.body) - - - \ No newline at end of file + + diff --git a/src/aios_kernel/workflow.py b/src/aios_kernel/workflow.py index 00bb255..f85d153 100644 --- a/src/aios_kernel/workflow.py +++ b/src/aios_kernel/workflow.py @@ -390,11 +390,11 @@ class Workflow: result_func.append(this_func) if len(result_func) > 0: return result_func - return None - + return None + async def _role_execute_func(self,the_role:AIRole,inenr_func_call_node:dict,prompt:AgentPrompt,org_msg:AgentMsg,stack_limit = 5) -> str: from .compute_kernel import ComputeKernel - + func_name = inenr_func_call_node.get("name") arguments = json.loads(inenr_func_call_node.get("arguments")) @@ -418,7 +418,7 @@ class Workflow: if stack_limit > 0: inner_func_call_node = task_result.result_message.get("function_call") if inner_func_call_node: - return await self._role_execute_func(the_role,inner_func_call_node,prompt,org_msg,stack_limit-1) + return await self._role_execute_func(the_role,inner_func_call_node,prompt,org_msg,stack_limit-1) else: return task_result.result_str @@ -440,7 +440,7 @@ class Workflow: prompt.append(await self._get_prompt_from_session(workflow_chat_session)) msg_prompt = AgentPrompt() - msg_prompt.messages = [{"role":"user","content":f"{msg.sender}:{msg.body}"}] + msg_prompt.messages = [{"role":"user","content":f"user name is {msg.sender}, his question is :{msg.body}"}] prompt.append(msg_prompt) self._format_msg_by_env_value(prompt)