继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

手把手教你从0到1搭建一个AI Agent(智能体) - 动手做AI Agent

陪伴而非守候
关注TA
已关注
手记 395
粉丝 62
获赞 285
概述

深入了解AI Agent(智能体)在弥补大型语言模型在知识时效性、复杂推理和决策能力上的不足方面的作用。从直接回答到思维链(Chain-of-Thought),再到行动(Action-Only)以及融合思维与行动的过程,AI Agent通过集成外部工具和资源实现能力升级。LangChain开源库为构建集成了外部工具、记忆系统和链机制的AI Agent提供了便利。构建AI Agent涉及工具定义、Prompt设计和完整代码示例,通过“思考-行动”循环执行任务,实现从任务理解到执行的自动化。

从0到1搭建AI Agent:动手做AI Agent

为什么要Agent化AI?

AI Agent(智能体)通过集成外部工具和资源,弥补了大型语言模型(LLM)在知识时效性、复杂推理和决策能力上的不足。例如,在规划购买高铁票的场景中,虽然AI模型可以理解“购买高铁票”这一行为,但它通常缺乏关于个人所在城市、具体路线、时间表和价格等实际信息。Agent化模型能够通过调用外部API来获取这些信息,从而提供更准确和个性化的服务。

AI Agent的进化路径

AI Agent的构建和发展经历了几个关键阶段:

  • 从直接回答到思维链(Chain-of-Thought,COT):引入了思考过程,使智能体在执行任务前能够进行逻辑推理,形成更连贯和合理的回答。
  • 从COT到行动(Action-Only):着重于执行特定任务,利用函数调用的能力,增强决策的执行效率和灵活性。
  • 融合思维与行动:实现智能体在思考和行动之间的无缝切换,结合逻辑推理与实际操作,提升解决问题的能力。

通过LangChain实现AI Agent

使用LangChain这一开源库,开发者能够构建集成了外部工具、记忆系统和链机制的AI Agent。以下是关键组成部分的实现:

  • 模型与提示:配置AI模型和编写引导其执行特定任务的提示词。
  • 记忆与索引:集成外部系统如数据库或缓存,以存储和检索历史交互和关键信息。
  • 链(Chains):构建智能Agent的工作流程,实现从任务理解到执行的自动化。

AI Agent的构建步骤

  1. 工具定义:通过定义函数或现有的API调用,实现特定功能,如查询火车票或执行其他任务。
  2. Prompt设计:构建能够引导AI Agent执行任务的复杂模板,包括思考过程和决策逻辑。
  3. 完整代码示例
from langchain_core.prompts import PromptTemplate
from langchain_core.tools import StructuredTool
import json

def search_train_ticket(origin, destination, date, departure_time_start, departure_time_end):
    # 假设这是一个模拟的API调用,实际场景中应该是调用真实的API或数据库查询
    return [
        {
            "train_number": "G1234",
            "origin": "北京",
            "destination": "上海",
            "departure_time": "2024-06-01 8:00",
            "arrival_time": "2024-06-01 12:00",
            "price": "100.00",
            "seat_type": "商务座",
        },
        # 更多数据...
    ]

def purchase_train_ticket(train_number):
    # 假设这是一个模拟的API调用,实际场景中应该是调用真实的API或数据库操作
    return {
        "result": "success",
        "message": "购买成功",
        "data": {
            "train_number": "G1234",
            "seat_type": "商务座",
            "seat_number": "7-17A"
        }
    }

search_train_ticket_tool = StructuredTool.from_function(
    func=search_train_ticket,
    name="查询火车票",
    description="查询指定日期可用的火车票。",
)

purchase_train_ticket_tool = StructuredTool.from_function(
    func=purchase_train_ticket,
    name="购买火车票",
    description="购买火车票。会返回购买结果(result) 和座位号(seat_number)",
)

template = '''
你的任务是:
{task_description}

你可以使用以下工具或指令:
{tools}

当前的任务执行记录:
{memory}

按照以下格式输出:
任务:你收到的需要执行的任务
思考: 观察你的任务和执行记录,并思考你下一步应该采取的行动
然后,根据以下格式说明,输出你选择执行的动作/工具:
{format_instructions}
'''

prompt = PromptTemplate.from_template(template)

AI Agent的执行流程

AI Agent通过“思考-行动”循环执行任务:

  • 思考:在执行前,Agent根据任务描述和现有信息进行逻辑推理,决定下一步行动。
  • 行动:基于思考结果,Agent调用相应的工具或API执行任务。

构建与测试AI Agent

  1. 实战代码:通过以下完整的代码示例展示如何定义工具、构建Prompt并结合LangChain框架构建AI Agent。
def main():
    task_description = "购买从北京到上海的高铁票"
    tools = [search_train_ticket_tool, purchase_train_ticket_tool]
    memory = ""

    while True:
        user_input = prompt(task_description=task_description, tools=tools, memory=memory)
        task = user_input["task"]
        if task == "查询火车票":
            response = search_train_ticket_tool.run(
                origin="北京",
                destination="上海",
                date="2024-06-01",
                departure_time_start="08:00",
                departure_time_end="09:00",
            )
            memory = f"已查询到火车票: {json.dumps(response)}"
        elif task == "购买火车票":
            train_number = response["train_number"]
            response = purchase_train_ticket_tool.run(train_number=train_number)
            memory = f"购买成功,座位号为:{response['data']['seat_number']}"
            break
        else:
            memory = "未识别的任务,请输入正确的命令"

        task_description = user_input["thinking"]

if __name__ == "__main__":
    main()

结语

构建AI Agent是一项具有挑战性但极其有价值的实践,它不仅能够增强AI系统解决问题的能力,还能够提高其在实际场景中的可用性和实用性。通过不断迭代和优化,AI Agent能够适应更复杂和动态的环境,为用户提供更智能、更个性化的服务。鼓励开发者通过实践和学习,探索AI Agent在不同领域中的应用潜力与创新。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP