ai-agents-for-beginners

探索 AI 代理框架

(点击上方图片以查看本课视频)

探索 AI 代理框架

AI 代理框架是旨在简化 AI 代理的创建、部署和管理的软件平台。这些框架为开发者提供预构建的组件、抽象和工具,从而简化构建复杂 AI 系统的过程。

这些框架通过为 AI 代理开发中常见的挑战提供标准化方法,帮助开发者专注于应用的独特方面。它们增强了构建 AI 系统时的可扩展性、可访问性和效率。

介绍

本课将涵盖:

学习目标

本课的目标是帮助你理解:

什么是 AI 代理框架,它们使开发者能够做什么?

传统的 AI 框架可以帮助你将 AI 集成到应用中,并在以下方面提升这些应用:

这听起来很棒,那为什么我们还需要 AI 代理框架?

AI 代理框架不仅仅是普通的 AI 框架。它们旨在支持创建能够与用户、其他代理和环境交互以实现特定目标的智能代理。这些代理可以表现出自主行为、做出决策并适应变化的条件。下面来看一些 AI 代理框架支持的关键能力:

总之,代理让你能做更多事,将自动化提升到新的水平,创建能够从其环境中适应和学习的更智能系统。

如何快速原型、迭代并改进代理的能力?

这是一个变化迅速的领域,但大多数 AI 代理框架都有一些共通点,可以帮助你快速原型和迭代,主要包括模块化组件、协作工具和实时学习。让我们深入了解这些方面:

使用模块化组件

像 Microsoft Agent 框架这样的 SDK 提供预构建组件,例如 AI 连接器、工具定义和代理管理。

团队如何使用这些:团队可以快速组合这些组件来创建功能性原型,而无需从头开始构建,从而实现快速实验和迭代。

在实践中的工作方式:你可以使用预构建的解析器从用户输入中提取信息,使用内存模块存储和检索数据,并使用提示生成器与用户交互,而无需从零开始构建这些组件。

示例代码。让我们看一个示例,展示如何使用 Microsoft Agent 框架和 AzureAIProjectAgentProvider 让模型通过工具调用来响应用户输入:

# 微软代理框架 Python 示例

import asyncio
import os
from typing import Annotated

from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential


# 定义一个预订旅行的示例工具函数
def book_flight(date: str, location: str) -> str:
    """Book travel given location and date."""
    return f"Travel was booked to {location} on {date}"


async def main():
    provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
    agent = await provider.create_agent(
        name="travel_agent",
        instructions="Help the user book travel. Use the book_flight tool when ready.",
        tools=[book_flight],
    )

    response = await agent.run("I'd like to go to New York on January 1, 2025")
    print(response)
    # 示例输出:您于2025年1月1日飞往纽约的航班已成功预订。祝您旅途愉快!✈️🗽


if __name__ == "__main__":
    asyncio.run(main())

从此示例中你可以看到如何利用预构建的解析器从用户输入中提取关键信息,例如航班预订请求的出发地、目的地和日期。这种模块化方法让你可以专注于高层逻辑。

利用协作工具

像 Microsoft Agent 框架这样的框架便于创建可以协同工作的多个代理。

团队如何使用这些:团队可以为代理设计特定角色和任务,使其能够测试并改进协作工作流,从而提高整体系统效率。

在实践中的工作方式:你可以创建一个代理团队,每个代理具有专门的功能,例如数据检索、分析或决策。这些代理可以互相通信并共享信息,以实现共同目标,比如回答用户查询或完成任务。

示例代码(Microsoft Agent 框架)

# 使用微软代理框架创建多个协同工作的代理

import os
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential

provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())

# 数据检索代理
agent_retrieve = await provider.create_agent(
    name="dataretrieval",
    instructions="Retrieve relevant data using available tools.",
    tools=[retrieve_tool],
)

# 数据分析代理
agent_analyze = await provider.create_agent(
    name="dataanalysis",
    instructions="Analyze the retrieved data and provide insights.",
    tools=[analyze_tool],
)

# 按顺序运行代理以完成任务
retrieval_result = await agent_retrieve.run("Retrieve sales data for Q4")
analysis_result = await agent_analyze.run(f"Analyze this data: {retrieval_result}")
print(analysis_result)

上面的代码演示了如何创建一个涉及多个代理协同分析数据的任务。每个代理执行特定功能,任务通过协调这些代理来实现期望的结果。通过创建具有专门角色的专用代理,可以提高任务效率和性能。

实时学习

高级框架提供实时上下文理解和适应的能力。

团队如何使用这些:团队可以实现反馈回路,使代理从交互中学习并动态调整其行为,从而持续改进和优化能力。

在实践中的工作方式:代理可以分析用户反馈、环境数据和任务结果,以更新其知识库、调整决策算法并随着时间提高性能。这种迭代学习过程使代理能够适应变化的条件和用户偏好,从而增强整体系统效果。

Microsoft Agent 框架与 Azure AI 代理服务有什么区别?

有很多比较这些方法的方式,但让我们从设计、能力和目标用例方面来看一些关键差异:

Microsoft Agent 框架 (MAF)

Microsoft Agent 框架提供了一个用于使用 AzureAIProjectAgentProvider 构建 AI 代理的简化 SDK。它使开发者能够创建利用 Azure OpenAI 模型的代理,具有内置的工具调用、会话管理以及通过 Azure 身份提供的企业级安全性。

用例:构建具备工具使用、多步骤工作流和企业集成场景的生产就绪 AI 代理。

以下是 Microsoft Agent 框架的一些重要核心概念:

Azure AI 代理服务

Azure AI 代理服务是较新的补充,于 Microsoft Ignite 2024 上推出。它允许使用更灵活的模型来开发和部署 AI 代理,例如直接调用开源的大型语言模型(LLM),如 Llama 3、Mistral 和 Cohere。

Azure AI 代理服务提供更强的企业安全机制和数据存储方法,使其适用于企业级应用。

它与用于构建和部署代理的 Microsoft Agent 框架开箱即用地协同工作。

该服务目前处于公开预览阶段,支持使用 Python 和 C# 构建代理。

使用 Azure AI 代理服务 Python SDK,我们可以创建一个带有用户定义工具的代理:

import asyncio
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

# 定义工具函数
def get_specials() -> str:
    """Provides a list of specials from the menu."""
    return """
    Special Soup: Clam Chowder
    Special Salad: Cobb Salad
    Special Drink: Chai Tea
    """

def get_item_price(menu_item: str) -> str:
    """Provides the price of the requested menu item."""
    return "$9.99"


async def main() -> None:
    credential = DefaultAzureCredential()
    project_client = AIProjectClient.from_connection_string(
        credential=credential,
        conn_str="your-connection-string",
    )

    agent = project_client.agents.create_agent(
        model="gpt-4o-mini",
        name="Host",
        instructions="Answer questions about the menu.",
        tools=[get_specials, get_item_price],
    )

    thread = project_client.agents.create_thread()

    user_inputs = [
        "Hello",
        "What is the special soup?",
        "How much does that cost?",
        "Thank you",
    ]

    for user_input in user_inputs:
        print(f"# User: '{user_input}'")
        message = project_client.agents.create_message(
            thread_id=thread.id,
            role="user",
            content=user_input,
        )
        run = project_client.agents.create_and_process_run(
            thread_id=thread.id, agent_id=agent.id
        )
        messages = project_client.agents.list_messages(thread_id=thread.id)
        print(f"# Agent: {messages.data[0].content[0].text.value}")


if __name__ == "__main__":
    asyncio.run(main())

核心概念

Azure AI 代理服务具有以下核心概念:

用例:Azure AI 代理服务面向需要安全、可扩展且灵活的 AI 代理部署的企业应用。

这些方法之间的区别是什么?

听起来确实有重叠,但在设计、能力和目标用例方面存在一些关键差异:

仍然不确定选择哪个?

用例

让我们通过一些常见用例来帮助你决策:

Q: 我正在构建生产级 AI 代理应用,并希望快速入门

A: Microsoft Agent 框架是一个很好的选择。它通过 AzureAIProjectAgentProvider 提供简单、Python 风格的 API,使你只需几行代码即可定义带有工具和指令的代理。

Q: 我需要具有企业级部署并能与 Azure 集成(如 Search 和代码执行)

A: Azure AI 代理服务更合适。它是一个平台服务,为多模型、Azure AI Search、Bing Search 和 Azure Functions 等提供内置能力。它使你能够在 Foundry 门户中轻松构建代理并进行规模化部署。

Q: 我仍然很困惑,只想要一个选项

A: 先从 Microsoft Agent 框架开始构建你的代理,然后在需要在生产中部署和扩展时使用 Azure AI 代理服务。这种方法让你可以快速迭代代理逻辑,同时有一条明确的企业部署路径。

让我们总结一下关键差异:

Framework Focus Core Concepts Use Cases
Microsoft Agent 框架 带工具调用的精简代理 SDK 代理、工具、Azure 身份 构建 AI 代理、工具使用、多步骤工作流
Azure AI 代理服务 灵活模型、企业安全、代码生成、工具调用 模块化、协作、流程编排 安全、可扩展且灵活的 AI 代理部署

我能否直接集成我现有的 Azure 生态系统工具,还是需要独立的解决方案?

答案是肯定的,您可以将现有的 Azure 生态系统工具直接与 Azure AI Agent Service 集成,特别是因为它已被构建为与其他 Azure 服务无缝协作。例如,您可以集成 Bing、Azure AI Search 和 Azure Functions。与 Microsoft Foundry 也有深度集成。

Microsoft Agent Framework 还通过 AzureAIProjectAgentProvider 和 Azure identity 与 Azure 服务集成,使您可以直接从代理工具调用 Azure 服务。

示例代码

还有关于 AI 代理框架的问题吗?

加入 Microsoft Foundry Discord 与其他学习者交流,参加答疑时间,并获得您关于 AI 代理的问题解答。

参考资料

上一课

AI 代理及其用例简介

下一课

理解代理式设计模式


免责声明: 本文件已使用 AI 翻译服务 Co-op Translator (https://github.com/Azure/co-op-translator) 进行翻译。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原文(原始语言版本)应被视为权威来源。对于关键信息,建议采用专业人工翻译。因使用本翻译而导致的任何误解或误释,我们不承担任何责任。