网站的开发环境设计,如何调整网站板块位置,哪里可以学网络运营和推广,使用top域名做网站在探索大语言模型的创意应用过程中#xff0c;我们开发了一个基于多 Agent 的智能诗歌创作系统。本文将介绍如何通过多个专业化的 Agent 协同工作#xff0c;实现根据地点和天气信息自动创作诗歌的功能。 GitHub Code 项目地址
核心架构设计
1. Agent 基类设计
from pydan…在探索大语言模型的创意应用过程中我们开发了一个基于多 Agent 的智能诗歌创作系统。本文将介绍如何通过多个专业化的 Agent 协同工作实现根据地点和天气信息自动创作诗歌的功能。 GitHub Code 项目地址
核心架构设计
1. Agent 基类设计
from pydantic import BaseModel
from typing import Optionalclass Agent(BaseModel):name: str Agentmodel: str gpt-4o # deepseek-chat, mixtral-8x7b-32768, Qwen/Qwen2-72B-Instruct, gpt-4o, llama3-70b-8192instructions: str 你是一个非常有用的人工智能助手你使用中文回答用户的问题。tools: list []2. 消息处理机制
def run_full_turn(agent, messages, logger):current_agent agentnum_init_messages len(messages)messages messages.copy()while True:# turn python functions into tools and save a reverse maptool_schemas [function_to_schema(tool) for tool in current_agent.tools]tools {tool.__name__: tool for tool in current_agent.tools}# 1. get openai completion response get_model_response_with_tools(model_namecurrent_agent.model,messages[{role: system, content: current_agent.instructions}] messages,toolstool_schemas or None)message response.choices[0].messagemessages.append(message)# 记录agent会话logger.start_agent_session(current_agent.name)if message.content:print(f{current_agent.name}:, message.content)logger.log_agent_message(current_agent.name, message.content)if not message.tool_calls:break# 2. handle tool calls for tool_call in message.tool_calls:tool_name tool_call.function.nametool_args json.loads(tool_call.function.arguments)result execute_tool_call(tool_call, tools, current_agent.name)logger.log_tool_call(tool_name, tool_args, result)if type(result) is Agent:current_agent resultresult f交接给 {current_agent.name}. 请立即进入角色.result_message {role: tool,tool_call_id: tool_call.id,content: str(result),}messages.append(result_message)return Response(agentcurrent_agent, messagesmessages[num_init_messages:])3. Agent 切换机制
def transfer_back_to_triage():如果用户提出了一个超出你职责的话题就调用这个选项。return triage_agentdef transfer_to_poem_agent():交接给诗歌创作agentreturn poem_agentdef transfer_to_get_env_agent():交接给环境信息查询agentreturn get_env_agent4. 工具系统设计
def get_data_info(location: str) - str:获取当前日期信息current_date datetime.now()formatted_date current_date.strftime(%Y年%m月%d日)return formatted_datedef poetry_creation(weather: str, location: str, date: str) - str:根据天气、地点和当前的时间信息创作一首诗。if not date:date datetime.now().strftime(%Y年%m月%d日)weather weather or 晴天location location or 塞纳河畔poem get_model_response_with_tools(model_namedeepseek-chat,messages[{role: system, content: 你是一位才华横溢的诗人擅长捕捉当下的时空之美。创作时请注意1. 准确把握季节特征将天气、温度等自然元素融入诗中2. 体现地域特色紧密结合当前地点展现当地独特的景观和人文气息3. 用优美的意象和细腻的感受打动读者4. 根据用户需求灵活选择诗歌形式古诗、现代诗等}] [{role: user, content: f请根据以下信息创作一首诗\n地点{location}\n天气状况{weather}当前日期{date}}])return poem专业化 Agent 设计
1. 分发任务 Agent
triage_agent Agent(nameTriage Agent,instructions(你是一个专门分发任务的小助手擅长使用工具。你的工作是收集信息调用不同的agent来解决用户的问题。你和用户交流的语气和善而自然。),tools[transfer_to_get_env_agent, transfer_to_poem_agent],
)2. 环境信息收集 Agent
get_env_agent Agent(nameGet Weather Agent,instructions(你的任务根据用户所在地点收集该地的环境信息你擅长使用工具。你需要 \1. 根据用户所在地点进行天气的查询并返回天气信息 \2. 获取当前日期信息 \3. 交接给诗歌创作agent),tools[get_weather, get_data_info, transfer_to_poem_agent, transfer_back_to_triage]
)3. 诗歌创作 Agent
poem_agent Agent(namePoetry Creation Agent,instructions(你的职责是根据天气信息和地点信息写一首诗。如果用户没有指明诗歌的风格就写一首现代诗如果用户有要求诗歌的风格则按照用户要求的风格写诗。),tools[poetry_creation, transfer_back_to_triage],
)系统特点 分层协作 任务分发层智能路由用户请求信息收集层获取环境数据创作执行层生成诗歌内容 完整日志记录 Agent 会话追踪工具调用记录完整对话历史 灵活的创作模式 支持多种诗歌风格融合环境元素个性化创作指导
实例展示
以下是一个完整的诗歌创作对话示例
user: 我在上海请给我写一首七言绝句Triage Agent: 好的我需要先查询一下今天上海的环境信息然后再为你创作一首七言绝句。请稍等片刻。
Triage Agent: transfer_to_get_env_agent({})Get Weather Agent: get_weather({city: shanghai})
Get Weather Agent: get_data_info({location: shanghai})
Get Weather Agent: transfer_to_poem_agent({})Poetry Creation Agent: poetry_creation({weather: 晴朗, location: 上海, date: 2024年12月07日})
Poetry Creation Agent: 《上海晴日》十二月七日上海晴空万里
阳光洒满黄浦江畔温暖如春。
外滩的钟声悠扬穿越百年沧桑
东方明珠塔顶云端之上俯瞰繁华。梧桐叶落铺就金色地毯
南京路步行街人潮如织笑语盈盈。
豫园的古色古香与现代高楼相映成趣
城隍庙的香火缭绕着岁月的痕迹。陆家嘴金融区玻璃幕墙闪耀
世纪大道上车流如梭时光匆匆。
在这座魔都古老与现代交织
晴朗的日子每一处都是诗意的画卷。2024年12月07日上海的晴朗
是冬日里的一抹暖阳温暖人心。
在这座城市的每一个角落
都能感受到那份独特的魅力与活力。user: 不要写这么长我要的是七言绝句Poetry Creation Agent: poetry_creation({weather: 晴朗, location: 上海, date: 2024年12月07日})
Poetry Creation Agent: 《上海晴日》黄浦江畔日光暖
外滩钟声百年传。
东方明珠映蓝天
晴日漫步心悠然。user: 好的谢谢这个示例展示了系统如何通过多个 Agent 的协作完成诗歌创作首先由 Triage Agent 接收请求并转发然后由 Get Weather Agent 收集环境信息最后由 Poetry Creation Agent 根据收集到的信息进行创作。当用户对诗歌长度不满意时系统能够快速调整并重新创作符合要求的作品。