AI Agent: 初识入门与实现

什么是AI Agent

        AI Agent(人工智能代理) 是一种能够在一定程度上自主感知环境、处理信息、做出决策并执行动作的智能体。它是一个具备“感知 → 思考 → 行动”能力的AI系统,可以代替或辅助人类完成某项任务。

具备能力:

  • 感知能力:能获取来自用户、环境或数据源的信息(如语音、文字、图像、API返回结果等)
  • 决策能力:能根据目标、规则或推理逻辑,规划下一步行为 
  • 执行能力:可调用工具、脚本、API,完成任务(如发送邮件、查询数据库、生成内容等) 
  • 记忆能力:可以记录对话或任务历史,并据此优化策略或个性化响应

举例

  • 你的需求:“帮我规划杭州3日游行程并订酒店。”
  • AI Agent执行步骤:
  1. 理解你的意图;
  2. 调用地图和酒店API获取推荐;
  3. 安排每日路线并生成一份行程表;
  4. 提供订购链接或自动下单(需授权)。

核心组件

组件作用
Tool工具功能,如查天气、支付
AgentType智能体类型基于大模型进行推理和行动,如ReAct架构
LLM大语言模型感知与思考,如deepseek、qwen

比喻:LLM是人的大脑,AgentType是四肢,Tool外部道具(电动车,电脑)

常见Agent框架

框架语言特点
LangChain / LangGraphPython社区活跃、工具丰富
AutogenPython多智能体协作、支持代码执行
CrewAIPython类似真实“多角色协作”的 Agent 框架
SuperAgentTypeScript全栈 Agent 支持,适合 Web 应用嵌入

代码实现

创建大模型

# 创建大模型
llm = ChatTongyi(model="qwen-turbo", dashscope_api_key="xxxxxxx")
  • model:使用LLM模型

  • dashscope_api_key:通义千问API KEY

创建Tool

def lizz_tool(str):
    try:
        return len(str)
    except:
        return f"无相关内容:{str}"

Tools包

# 工具集合
tools = [
    Tool(
        name="lizz",
        func=lizz_tool,
        description="开元工具,长度"
    ),
    Tool(
        name="wikiSearch",
        func=wiki_search,
        description="用于获取互联网上的信息或文档"
    )
]
  • name:工具标识
  • func: 工具方法
  • description: 工具描述,会根据描述匹配使用那个方法

初始化Agent

agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)
  • tools:工具集
  • llm:大模型
  • agent:智能体框架
    • 1.zero-shot-react-description
      • 特点:根据工具描述自主决定使用哪个工具。

      • 推荐场景:大多数通用场景;无需训练,零样本推理。

      • 例子:问题:今天北京天气如何? → 使用搜索工具。

    • 2. react-docstore
      • 特点:ReAct 推理风格,专用于基于文档存储(Docstore)工具的 QA。

      • 推荐场景:文档问答,Wikipedia QA 等。

    • 3. self-ask-with-search
      • 特点:先提出子问题,再使用搜索工具回答每个子问题。

      • 推荐场景:需要推理过程拆解问题时。

    • 4.conversational-react-description
      • 特点:在 zero-shot-react-description 基础上加入了上下文记忆。

      • 推荐场景:多轮对话、上下文敏感的问答。

    • 5. chat-zero-shot-react-description(LangChain v0.1+)
      • 特点:用于聊天模型(ChatModel,如 GPT-4、Qwen-chat)执行 ReAct 推理。

      • 推荐场景:推荐用于 chat-based LLM,代替旧的 zero-shot-react-description

    • 6. chat-conversational-react-description
      • 特点:聊天模型 + 多轮对话记忆 + 工具选择。

      • 推荐场景:构建对话型智能助手,能记住上下文并使用工具。

  • verbose:是否输出过程

用例

环境变量文件.env

DASHSCOPE_API_KEY=sk-xxx

创建python脚本

import os
import wikipedia
from langchain.agents import Tool, AgentType, initialize_agent
from langchain_community.chat_models import ChatTongyi
from dotenv import load_dotenv

load_dotenv()

# 初始化Tongyi大模型
llm = ChatTongyi(model="qwen-turbo", dashscope_api_key=os.getenv("DASHSCOPE_API_KEY"))


#创建工具
def lizz_tool(str):
    try:
        return len(str)
    except:
        return f"无相关内容:{str}"


def wiki_search(query):
    try:
        wikipedia.set_lang("zh")
        summary = wikipedia.summary(query, sentences=2)
        return summary
    except:
        return "无相关内容"

# 工具集合
tools = [
    Tool(
        name="lizz",
        func=lizz_tool,
        description="开元工具,长度"
    ),
    Tool(
        name="wikiSearch",
        func=wiki_search,
        description="用于获取互联网上的信息或文档"
    )
]

# 初始化 Agent
agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,  # react框架
    verbose=True
)


if __name__ == '__main__':
    # 提问
    question = "使用开元工具计算字符串'实打实大是的是的'长度"
    answer = agent.run(question)
    print("回答:", answer)

执行过程

> Entering new AgentExecutor chain...          # 新的任务链
Thought: 我需要使用开元工具来计算给定字符串的长度。   # 初步推理
Action:                                        # 执行工具和输入 
```
{
  "action": "lizz",
  "action_input": "实打实大是的是的"
}
```

Observation: 8                                 # 执行结果
Thought:我现在知道这个字符串的长度了。              # 确认推理
Final Answer: 字符串 '实打实大是的是的' 的长度是 8。# 最终回答

> Finished chain.                              #结束任务链

参考

MCP市场

智能体平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lizz666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值