前言
随着大模型技术快速发展,LLM Agent 与Function Calling 已成为 AI 应用落地的核心能力。传统 LLM 仅能处理文本生成,存在信息滞后、缺乏行动力、逻辑不精确三大痛点,而 Agent 通过自主规划、记忆、工具调用实现复杂任务,Function Calling 则打通大模型与外部世界的连接。
本文从基础概念讲起,覆盖Dify 本地部署、Ollama 本地大模型对接、Function Calling 代码实战、LangChain Agent 开发、Coze 低代码搭建全流程,小白也能跟着一步步实现 AI Agent 从 0 到 1 落地。
一、核心概念:LLM、Agent、Function Calling 彻底搞懂
1.1 LLM vs Agent:不是一回事!
- LLM(大型语言模型):专注自然语言理解与生成,如文本创作、翻译、问答,是 **"只会思考的大脑"**。
- Agent(AI 智能体) :具备自主性、目标导向、环境交互 能力,包含规划、记忆、工具使用、执行四大核心组件,是 **"能思考、能行动、能完成任务的完整系统"**。
一句话总结:LLM 是 Agent 的核心大脑,Agent 是包含 LLM 的完整智能实体。
1.2 Agent 四大核心能力
- 规划(Planning):拆解复杂任务、反思执行过程、决定任务终止。
- 记忆(Memory):短期记忆(上下文)、长期记忆(向量数据库知识库)。
- 工具使用(Tools):调用计算器、搜索、代码执行器、API 等与现实世界交互。
- 执行(Action):根据规划与记忆完成具体操作,输出结果。
1.3 Function Calling:大模型的 "手脚"
大模型天生缺陷:
- 信息滞后:知识截止固定时间,无实时数据。
- 缺乏行动力:无法调用外部工具、执行实际操作。
- 无真逻辑:依赖统计规律,精确场景易出错。
Function Calling 是让 LLM 输出结构化函数调用指令 ,由外部系统执行后返回结果,再由 LLM 整合回答,实现大模型与外部系统的无缝对接。
1.4 Agent vs Function Calling:关系理清
- Function Calling :轻量级工具调用能力,模型直接调用预定义函数,像 "瑞士军刀"。
- Agent :自主决策智能体,可规划任务、组合多个工具(含 Function Calling),像 "熟练工人"。
二、Dify 本地部署:一站式 LLM 应用开发平台
2.1 Dify 简介
开源 LLM 应用开发平台,提供Agent 构建、工作流编排、RAG 检索、模型管理能力,比 LangChain 更易用,支持本地部署,隐私性更强。
2.2 本地部署完整步骤
2.2.1 环境准备
-
安装Docker Desktop(Windows/Mac/Linux 通用)。
-
配置 Docker 镜像加速(解决拉取慢问题):
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://docker.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn"
]
}
2.2.2 Dify 部署
-
下载 Dify 源码(推荐 1.8.0 版本):https://github.com/langgenius/dify/releases。
-
解压进入
docker目录,将.env.example重命名为.env。 -
命令行执行启动命令:
docker-compose up -d
-
访问
http://localhost/install初始化管理员账号,完成部署。
2.3 Ollama 本地大模型对接
-
安装 Ollama:https://ollama.com/。
-
命令行下载本地模型:
ollama run deepseek-r1:1.5b
-
Dify 配置 Ollama:
-
修改
.env添加:CUSTOM_MODEL_ENABLED=true
OLLAMA_API_BASE_URL=host.docker.internal:11434 -
Dify 后台添加 Ollama 模型,完成关联。
2.4 Dify 五大应用类型快速上手
- 聊天助手:简单配置即可搭建对话机器人,支持变量、知识库接入。
- Agent:具备自主规划、工具调用能力的智能助手,可自动完成复杂任务。
- Chatflow:支持记忆的复杂多轮对话工作流。
- 工作流:面向单轮自动化任务的编排工作流。
- 文本生成:专注文本生成任务的 AI 助手。
三、Function Calling 代码实战:从零实现工具调用
3.1 核心工作流程
- 工具注册:定义函数元数据(名称、描述、参数)。
- 意图解析:LLM 判断是否需要调用工具。
- 生成调用:输出结构化 JSON 函数指令。
- 外部执行:应用层调用真实函数获取结果。
- 结果整合:LLM 基于结果生成自然语言回答。
3.2 实战:加法器 Function Calling
import json
from openai import OpenAI
# 初始化客户端
client = OpenAI(api_key="你的API_KEY", base_url="模型地址")
def get_completion(messages, model="qwen-plus"):
"""带Function Calling的对话请求"""
response = client.chat.completions.create(
model=model,
messages=messages,
tools=[
{
"type": "function",
"function": {
"name": "sum",
"description": "加法器,计算一组数的和",
"parameters": {
"type": "object",
"properties": {
"numbers": {"type": "array", "items": {"type": "number"}}
},
"required": ["numbers"]
}
}
}
]
)
return response.choices[0].message
# 测试提示词
prompt = "桌上有2个苹果,4个桃子,一共有几个水果?"
messages = [{"role": "user", "content": prompt}]
# 第一次调用:获取函数调用指令
response = get_completion(messages)
messages.append(response)
# 解析并执行函数
if response.tool_calls:
tool_call = response.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = sum(args["numbers"])
# 将结果返回模型
messages.append({"role": "tool", "name": "sum", "content": str(result)})
# 第二次调用:生成最终回答
final_response = get_completion(messages)
print(final_response.content)
四、LangChain Agent 开发:自主智能体实战
4.1 LangChain Agent 核心:ReAct 范式
思考(Thought)→ 行动(Action)→ 观察(Observation) 循环,让 LLM 交替推理与执行,提升可解释性、减少幻觉。
4.2 实战:文本长度计算 Agent
from langchain import hub
from langchain.agents import create_structured_chat_agent, AgentExecutor
from langchain.memory import ConversationBufferMemory
from langchain.tools import BaseTool
from langchain_openai import ChatOpenAI
# 1. 初始化大模型
model = ChatOpenAI(model="deepseek-r1:1.5b", base_url="http://host.docker.internal:11434/v1")
# 2. 自定义工具
class TextLengthTool(BaseTool):
name = "text_length"
description = "计算文本的字符长度"
def _run(self, text: str) -> int:
return len(text)
tools = [TextLengthTool()]
# 3. 加载ReAct提示词
prompt = hub.pull("hwchase17/structured-chat-agent")
# 4. 初始化Agent与记忆
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
agent = create_structured_chat_agent(llm=model, tools=tools, prompt=prompt)
agent_executor = AgentExecutor.from_agent_and_tools(
agent=agent, tools=tools, memory=memory, verbose=True
)
# 5. 执行任务
result = agent_executor.invoke({"input": "'我是AI助手'这句话的长度是多少?"})
print(result["output"])
五、Coze 低代码搭建 AI Agent:零代码快速上线
5.1 Coze 平台简介
一站式 AI Bot 开发平台,零代码 / 低代码搭建 Agent,支持发布到抖音、微信、飞书等平台,默认集成豆包、DeepSeek等大模型。
5.2 快速搭建步骤
- 注册登录:https://www.coze.cn/。
- 创建智能体:设置名称、功能介绍、人设提示词。
- 配置插件:添加天气、搜索、代码执行等工具。
- 工作流编排:可视化组合节点,实现链接总结、数据同步等复杂任务。
- 调试发布:预览测试后发布到目标平台。
5.3 标准 Prompt 模板(以投资大师为例)
# 角色
你是巴菲特,极具影响力的投资大师,通过Function Call解答经济问题、提供投资策略。
## 技能
1. 解答经济学问题:调用工具获取资料,通俗讲解专业知识。
2. 提供投资策略:结合用户风险承受能力,给出资产配置建议。
3. 分析经济趋势:收集最新数据,解读趋势与影响。
## 限制
- 仅讨论经济、投资相关内容。
- 回答逻辑清晰、基于可靠理论。
六、总结与避坑指南
6.1 核心知识点回顾
- Agent = 规划 + 记忆 + 工具 + 执行,是完整智能系统。
- Function Calling 是 LLM 连接外部世界的桥梁,解决信息滞后、无行动力问题。
- Dify 本地部署灵活,适合隐私敏感场景;Coze 低代码快速上线,适合业务落地。
- LangChain 适合自定义开发,ReAct 范式是 Agent 核心逻辑。
6.2 实战避坑
- Function Calling 工具描述必须清晰,否则 LLM 无法正确调用。
- Dify 对接 Ollama 时,API 地址需用
host.docker.internal而非localhost。 - Agent 工具不宜过多,避免 LLM 决策混乱,优先保留核心工具。
- 本地部署确保 Docker 正常运行,镜像加速配置到位。
结语
AI Agent 是大模型应用的未来,Function Calling 则是 Agent 能力的基石。本文覆盖理论 + 部署 + 代码 + 低代码全流程,无论你是开发者、产品经理还是 AI 爱好者,都能快速上手搭建自己的 AI 智能体。
后续可深入多 Agent 协作、RAG 增强、企业级私有化部署等方向,让 AI 真正落地业务、创造价值。
本文为实战教程,代码与步骤均亲测有效,欢迎点赞、收藏、留言交流!