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

安装步骤

  1. 克隆仓库:
git clone https://github.com/coleam00/ai-agents-masterclass.git
cd ai-agents-masterclass
  1. 创建虚拟环境:
python -m venv ai-agents-masterclass
  1. 激活虚拟环境:
# Windows
.\ai-agents-masterclass\Scripts\activate

# MacOS/Linux
source ai-agents-masterclass/bin/activate
  1. 安装依赖:
pip install -r requirements.txt
  1. 配置环境变量:
    复制.env.example.env并填写您的API密钥:
OPENAI_API_KEY=your_openai_key
ASANA_ACCESS_TOKEN=your_asana_token
ASANA_PROJECT_ID=your_project_id

使用说明

基本使用

  1. 运行Streamlit界面:
streamlit run streamlit_ui.py
  1. 在聊天界面中输入指令,例如:
请帮我创建一个名为"完成项目报告"的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)

典型使用场景

  1. 任务管理:通过自然语言创建、查询和更新Asana任务
  2. 文档检索:从Google Drive搜索相关文档
  3. 会议记录:自动总结会议记录并创建行动项
  4. 知识库查询:基于上传的文档回答专业问题

核心代码

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智能小助手)
公众号二维码

posted @ 2025-07-24 18:01  qife  阅读(15)  评论(0)    收藏  举报