智能体(Agent)的核心价值,在于 “模拟人类行为模式解决实际问题”—— 无论是帮人管理日程的个人助理,还是替代团队协作的协同智能体,本质都是通过技术复刻人类的 “决策 - 执行” 逻辑。作为程序员,开发智能体需先理解 “人需要什么”,再用代码实现 “智能体能做什么”。本文结合三类典型应用场景,通过可运行的代码示例,拆解智能体如何适配人类在日常效率、团队协作、专业领域的核心需求。

个人助理智能体:适配人类日常效率需求

现代人常面临 “信息过载、事务繁杂” 的困扰:待办事项记不全、日程冲突难协调、重复操作耗时间。个人助理智能体的设计核心,是 “复刻人类的时间管理逻辑”—— 通过自然语言理解拆解任务、按优先级排序事务、自动执行重复性操作,成为人的 “数字分身”。

核心功能与技术选型

  • 任务解析:用 LLM(如 ChatGLM-6B)理解自然语言指令,提取任务类型(日程 / 待办 / 提醒)、时间、优先级等关键信息;
  • 日程管理:对接本地日历(如 macOS Calendar、Windows 日历)或云日历 API,实现日程创建与冲突检测;
  • 自动化执行:通过 Python 调用系统接口,完成邮件发送、文件整理等重复性工作。

代码实战:日程管理与待办提醒智能体

以下代码实现一个基础个人助理智能体,支持通过自然语言添加日程、设置待办提醒,并自动检测日程冲突:


import datetime

import json

from typing import List, Dict

from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM

# 1. 初始化LLM任务解析器(用于理解自然语言指令)

def init_task_parser(model_name: str = "THUDM/chatglm-6b-int4"):

"""加载轻量化LLM,解析用户自然语言指令中的任务信息"""

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained(

model_name,

trust_remote_code=True,

device_map="auto"

).eval()

def parse_task(user_input: str) -> Dict:

"""

解析用户输入,提取任务信息

返回格式:{"type": "schedule/todo", "content": str, "time": datetime, "priority": "high/mid/low"}

"""

prompt = f"""

请从用户输入中提取任务信息,严格按照以下规则输出JSON:

1. 任务类型(type):若包含具体时间(如"明天3点")则为"schedule",否则为"todo";

2. 内容(content):任务的核心描述,去除时间等冗余信息;

3. 时间(time):若为schedule,格式为"YYYY-MM-DD HH:MM",否则为null;

4. 优先级(priority):含"紧急""必须"为"high",含"抽空""有空"为"low",默认"mid"。

用户输入:{user_input}

输出JSON(无需其他内容):

"""

response = model.generate(

tokenizer.build_chat_input(prompt, history=[]),

max_new_tokens=200,

temperature=0.1 # 降低随机性,确保输出格式稳定

)

task_json = tokenizer.decode(response[0], skip_special_tokens=True).split("输出JSON(无需其他内容):")[-1]

return json.loads(task_json)

return parse_task

# 2. 日程管理核心逻辑(含冲突检测)

class PersonalAssistant:

def __init__(self):

self.schedules: List[Dict] = [] # 存储日程:[{"content": str, "time": datetime, "priority": str}]

self.todos: List[Dict] = [] # 存储待办:[{"content": str, "priority": str, "done": bool}]

self.task_parser = init_task_parser() # 初始化任务解析器

def add_task(self, user_input: str) -> str:

"""添加任务(日程/待办),并返回执行结果"""

try:

task = self.task_parser(user_input)

# 处理日程任务

if task["type"] == "schedule":

task_time = datetime.datetime.strptime(task["time"], "%Y-%m-%d %H:%M")

# 检测日程冲突(前后30分钟内已有日程)

conflict = any(

abs((sch["time"] - task_time).total_seconds()) < 1800

for sch in self.schedules

)

if conflict:

return f"⚠️ 日程冲突:{task_time.strftime('%m-%d %H:%M')}前后30分钟已有其他安排"

self.schedules.append({

"content": task["content"],

"time": task_time,

"priority": task["priority"]

})

# 按时间排序日程

self.schedules.sort(key=lambda x: x["time"])

return f"✅ 已添加日程:{task_time.strftime('%m-%d %H:%M')} - {task['content']}(优先级:{task['priority']})"

# 处理待办任务

elif task["type"] == "todo":

self.todos.append({

"content": task["content"],

"priority": task["priority"],

"done": False

})

# 按优先级排序待办(high > mid > low)

self.todos.sort(key=lambda x: {"high": 0, "mid": 1, "low": 2}[x["priority"]])

return f"✅ 已添加待办:{task['content']}(优先级:{task['priority']})"

except Exception as e:

return f"❌ 添加失败:{str(e)}"

def show_tasks(self, task_type: str = "all") -> str:

"""展示任务列表(all/schedule/todo)"""

result = []

if task_type in ["all", "schedule"]:

result.append("📅 近期日程:")

if not self.schedules:

result.append(" 暂无日程安排")

else:

for i, sch in enumerate(self.schedules[:5], 1): # 只显示前5条

time_str = sch["time"].strftime("%m-%d %H:%M")

result.append(f" {i}. {time_str} - {sch['content']}({sch['priority']})")

if task_type in ["all", "todo"]:

result.append("\n✅ 待办任务:")

if not self.todos:

result.append(" 暂无待办任务")

else:

for i, todo in enumerate(self.todos[:5], 1):

status = "✅" if todo["done"] else "❌"

result.append(f" {i}. {status} {todo['content']}({todo['priority']})")

return "\n".join(result)

# 3. 测试个人助理智能体

if __name__ == "__main__":

assistant = PersonalAssistant()

# 模拟用户交互

print("🤖 个人助理智能体(输入'退出'结束)")

while True:

user_input = input("你:")

if user_input == "退出":

print("🤖 再见!")

break

elif user_input in ["查看任务", "任务列表"]:

print(f"🤖 {assistant.show_tasks()}")

else:

response = assistant.add_task(user_input)

print(f"🤖 {response}")

落地场景与人类需求适配

该智能体完美解决人类 “时间管理碎片化” 的痛点:用户只需用自然语言(如 “明天下午 2 点开项目会,紧急”“抽空整理报销单”)下达指令,智能体自动完成任务分类、冲突检测、优先级排序,无需手动操作日历或待办 APP。在实际应用中,还可扩展对接邮件 API(自动发送会议邀请)、闹钟接口(时间到点提醒),进一步贴合人类 “少操作、高效率” 的核心需求。

协作型智能体:模拟人类团队协作模式

在工作场景中,人类团队的高效协作依赖 “分工明确、沟通顺畅、成果对齐”—— 如产品经理写需求文档、开发写代码、测试做验证。协作型智能体的设计思路,是 “用多智能体系统复刻团队协作流程”:为每个智能体分配专属角色,定义角色间的交互规则,让系统自主完成复杂项目,减少人类的协调成本。

核心功能与技术选型

  • 角色定义:为每个智能体绑定 “专业技能”(如文档撰写、代码生成、质量检查);
  • 任务分配:用 “调度智能体” 拆解项目任务,按角色能力分配给对应执行智能体;
  • 结果协同:通过共享知识库(如向量数据库)实现智能体间的信息同步,确保成果一致性。

代码实战:多角色协作项目开发智能体

以下代码实现一个简化的协作型智能体系统,包含 “需求分析师”“Python 开发”“代码审查员” 三个角色,协同完成简单功能的开发任务:


import json

from typing import List, Dict

from transformers import pipeline

# 1. 定义智能体角色与技能

class AgentRole:

"""智能体角色类,封装角色名称、技能与LLM推理逻辑"""

def __init__(self, role_name: str, skill: str, model_name: str = "gpt2-medium"):

self.role_name = role_name

self.skill = skill

# 初始化文本生成管道(模拟角色的专业能力)

self.generator = pipeline(

"text-generation",

model=model_name,

device=-1 # CPU运行,GPU可设为0

)

def execute(self, task: str, context: str = "") -> str:

"""执行任务,结合上下文生成结果"""

prompt = f"""

你是一名专业的{self.role_name},擅长{self.skill}。

请根据以下任务和上下文完成工作,输出专业、完整的结果:

上下文(可选):{context}

任务:{task}

{self.role_name}的输出:

"""

result = self.generator(

prompt,

max_length=500,

temperature=0.7,

top_p=0.9,

repetition_penalty=1.1 # 避免重复

)

# 提取角色输出内容

return result[0]["generated_text"].split(f"{self.role_name}的输出:")[-1].strip()

# 2. 调度智能体:负责任务拆解与分配

class CoordinatorAgent:

def __init__(self, roles: List[AgentRole]):

self.roles = {role.role_name: role for role in roles} # 角色映射

# 初始化任务拆解器

self.task_splitter = pipeline(

"text-generation",

model="gpt2-medium",

device=-1

)

def split_task(self, project_task: str) -> List[Dict]:

"""拆解项目任务为角色可执行的子任务"""

prompt = f"""

请将项目任务拆分为适合以下角色执行的子任务,输出JSON列表:

角色包括:需求分析师(输出需求文档)、Python开发(编写代码)、代码审查员(检查代码质量)。

每个子任务需包含"role"(角色名)和"task"(子任务描述)。

项目任务:{project_task}

JSON列表(无需其他内容):

"""

response = self.task_splitter(

prompt,

max_length=300,

temperature=0.2

)

tasks_json = response[0]["generated_text"].split("JSON列表(无需其他内容):")[-1]

return json.loads(tasks_json)

def run_project(self, project_task: str) -> Dict:

"""执行整个项目:拆解任务→分配执行→汇总结果"""

print(f"📋 项目任务:{project_task}")

print("🔄 开始拆解任务...")

# 1. 拆解任务

sub_tasks = self.split_task(project_task)

print(f"✅ 任务拆解完成,共{len(sub_tasks)}个子任务")

# 2. 执行子任务(按顺序执行,后一个任务依赖前一个的结果)

project_result = {}

context = "" # 传递上下文(前序任务结果)

for i, sub_task in enumerate(sub_tasks, 1):

role_name = sub_task["role"]

task_content = sub_task["task"]

if role_name not in self.roles:

project_result[f"子任务{i}"] = f"❌ 无{role_name}角色,任务无法执行"

continue

print(f"\n🚀 执行子任务{i}:{role_name} - {task_content}")

role = self.roles[role_name]

result = role.execute(task_content, context)

project_result[f"子任务{i}"] = {

"role": role_name,

"task": task_content,

"result": result

}

# 更新上下文(将当前结果传递给下一个任务)

context += f"\n{role_name}的工作成果:{result[:200]}..." # 截取前200字符避免过长

# 3. 生成项目总结

print("\n📊 项目执行完成,生成总结...")

summary = self.generate_summary(project_result)

project_result["项目总结"] = summary

return project_result

def generate_summary(self, project_result: Dict) -> str:

"""生成项目执行总结"""

summary_prompt = f"""

请根据以下项目执行结果,生成简洁的总结报告,包含完成的任务、各角色贡献和最终成果:

项目执行结果:{json.dumps(project_result, ensure_ascii=False, indent=2)[:500]}...

总结报告:

"""

response = self.task_splitter(

summary_prompt,

max_length=300,

temperature=0.5

)

return response[0]["generated_text"].split("总结报告:")[-1].strip()

# 3. 初始化协作型智能体系统并测试

if __name__ == "__main__":

# 1. 创建各角色智能体

roles = [

AgentRole(

role_name="需求分析师",

skill="撰写清晰、详细的软件需求文档(含功能描述、输入输出、使用场景)"

),

AgentRole(

role_name="Python开发",

skill="根据需求文档编写可运行的Python代码,包含函数定义、注释和示例调用"

),

AgentRole(

role_name="代码审查员",

skill="检查Python代码的语法正确性、逻辑完整性、命名规范和性能优化建议"

)

]

# 2. 创建调度智能体

coordinator = CoordinatorAgent(roles)

# 3. 执行项目任务

project_task = "开发一个Python函数,实现对列表中数字的排序功能,支持升序和降序切换"

project_result = coordinator.run_project(project_task)

# 4. 输出项目结果

print("\n" + "="*50)

print("🎯 项目最终结果")

print("="*50)

for key, value in project_result.items():

if key == "项目总结":

</doubaocanvas>

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐