AI Agents Masterclass 项目文档
项目标题与描述
AI Agents Masterclass 是一个全面的AI代理开发教程项目,旨在展示如何利用大型语言模型(LLM)与外部系统交互,实现业务流程自动化。项目包含多个功能模块,如Asana任务管理、Google Drive文档处理、Slack消息交互等,通过实际案例演示AI代理的强大能力。
功能特性
- 多平台集成:支持Asana、Google Drive、Slack等多个平台的API集成
- 任务自动化:自动创建和管理Asana任务,包括设置截止日期和项目分配
- 文档处理:搜索Google Drive文档并自动创建新文档
- 对话交互:通过自然语言与AI代理交互,理解复杂指令
- RAG支持:实现基于文档的检索增强生成(Retrieval-Augmented Generation)
- 多模型支持:兼容OpenAI、Anthropic、Groq等多种LLM模型
- Streamlit UI:提供美观的交互式用户界面
- LangGraph支持:使用LangGraph实现复杂的代理工作流
安装指南
系统要求
- Python 3.8+
- Git
- Pip
安装步骤
- 克隆仓库:
git clone https://github.com/coleam00/ai-agents-masterclass.git
cd ai-agents-masterclass
- 创建虚拟环境:
python -m venv ai-agents-masterclass
- 激活虚拟环境:
# Windows
.\ai-agents-masterclass\Scripts\activate
# MacOS/Linux
source ai-agents-masterclass/bin/activate
- 安装依赖:
pip install -r requirements.txt
- 配置环境变量:
复制.env.example为.env并填写您的API密钥:
OPENAI_API_KEY=your_openai_key
ASANA_ACCESS_TOKEN=your_asana_token
ASANA_PROJECT_ID=your_project_id
使用说明
基本使用
- 运行Streamlit界面:
streamlit run streamlit_ui.py
- 在聊天界面中输入指令,例如:
请帮我创建一个名为"完成项目报告"的Asana任务,截止到本周五
API调用示例
from asana_agent import create_asana_task
# 创建Asana任务
response = create_asana_task(
task_name="项目报告",
project_gid="123456789",
due_on="2024-06-30"
)
print(response)
典型使用场景
- 任务管理:通过自然语言创建、查询和更新Asana任务
- 文档检索:从Google Drive搜索相关文档
- 会议记录:自动总结会议记录并创建行动项
- 知识库查询:基于上传的文档回答专业问题
核心代码
Asana任务创建工具
@tool
def create_asana_task(task_name: str, project_gid: str, due_on: str ="today") -> str:
"""
在Asana中创建任务
参数:
task_name: 任务名称
project_gid: 项目ID
due_on: 截止日期(默认为今天)
返回:
API响应或错误信息
"""
if due_on == "today":
due_on = str(datetime.now().date())
task_body = {
"data": {
"name": task_name,
"due_on": due_on,
"projects": [project_gid]
}
}
try:
api_response = tasks_api_instance.create_task(task_body, {})
return json.dumps(api_response, indent=2)
except ApiException as e:
return f"创建任务时出错: {e}"
LangGraph工作流定义
def get_runnable():
workflow = StateGraph(GraphState)
# 定义节点
workflow.add_node("agent", call_model)
workflow.add_node("tools", tool_node)
workflow.set_entry_point("agent")
# 定义条件边
workflow.add_conditional_edges(
"agent",
should_continue
)
workflow.add_edge("tools", "agent")
# 编译工作流
memory = AsyncSqliteSaver.from_conn_string(":memory:")
app = workflow.compile(checkpointer=memory)
return app
Streamlit聊天界面
async def main():
st.title("AI代理聊天")
# 初始化聊天历史
if "messages" not in st.session_state:
st.session_state.messages = [
SystemMessage(content=f"当前日期: {datetime.now().date()}")
]
# 显示聊天消息
for message in st.session_state.messages:
with st.chat_message(message.role):
st.markdown(message.content)
# 处理用户输入
if prompt := st.chat_input("请输入您的指令"):
st.chat_message("user").markdown(prompt)
st.session_state.messages.append(HumanMessage(content=prompt))
# 获取AI响应
with st.chat_message("assistant"):
response = st.write_stream(prompt_ai(st.session_state.messages))
st.session_state.messages.append(AIMessage(content=response))
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码


浙公网安备 33010602011771号