Prompt、Agent、Function Call、Skill、MCP,傻傻分不清楚?
核心概念关系图
先上干货,这张图让你从整体上理解这五个概念是如何分层递进的:

更多项目实战在Java突击队网:susan.net.cn
一句话概括:
- Prompt 是你跟AI说的“人话”
- Function Call 让AI能“动手干活”
- Agent 让AI会“思考规划”
- Skill 是AI的“职业技能证书”
- MCP 是AI世界的“USB接口”
下面我们一层一层拆开揉碎了讲,每层都有Java代码示例。
第一层:Prompt——和AI对话的“普通话”
1.1 什么是Prompt?
Prompt(提示词) 就是你输入给AI的文本指令。
它就像你去餐厅点菜时说的“来一份宫保鸡丁”,AI就是那个服务员,听懂你的话然后给你上菜。
在Java里,调用AI模型的第一步就是构造Prompt。
我用最简单的Spring AI示例来演示:
import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.SystemPrompt;
import org.springframework.ai.chat.prompt.UserPrompt;
@Service
public class AIService {
private final ChatClient chatClient;
public AIService(ChatClient chatClient) {
this.chatClient = chatClient;
}
public String askAI(String question) {
// 构造Prompt:可以包含系统消息和用户消息
Prompt prompt = new Prompt(
new SystemPrompt("你是一个Java架构师,擅长用通俗的语言解释技术概念。"),
new UserPrompt(question)
);
// 调用AI并返回结果
return chatClient.call(prompt).getResult().getOutput().getContent();
}
}
这里的SystemPrompt和UserPrompt就是最基础的Prompt形式。
它们决定了AI的身份和你要问的问题。
1.2 Prompt的高级玩法
光有基础Prompt还不够,在实际应用中我们经常需要提示词工程来引导AI做出更好的回答。比如:
public String generateJavaCode(String requirement) {
String promptTemplate = """
你是一个资深的Java开发工程师。
请根据以下需求生成Java代码,代码要包含必要的注释,并考虑异常处理:
需求:%s
请输出完整的Java类代码。
""";
String prompt = String.format(promptTemplate, requirement);
return chatClient.call(new Prompt(prompt)).getResult().getOutput().getContent();
}
Prompt的本质:它是人类意图与AI能力之间的“翻译官”。
Prompt写得好,AI才能干得好。
第二层:Function Calling——让AI从“说话”到“动手”
Prompt只能让AI“说话”,但AI想干点实事(比如查数据库、发邮件、调用第三方API)时,就无能为力了。
Function Calling(函数调用) 就是来解决这个问题的。
2.1 什么是Function Calling?
Function Calling允许开发者在调用大模型时,注册一系列函数(工具),模型在生成回复时如果判断需要调用外部工具,就会返回一个结构化的请求,由开发者执行真实的函数,再把结果返回给模型生成最终答案。
原理图如下:

2.2 Java实现Function Calling
我用LangChain4j来演示,因为它对Java开发者很友好。首先定义工具函数:
import dev.langchain4j.agent.tool.Tool;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class WeatherTool {
@Tool("获取指定城市的实时天气")
public String getWeather(String city) {
// 这里应该是真实的API调用,为了演示我们模拟数据
if ("北京".equals(city)) {
return "北京当前天气:晴,温度25℃,湿度40%";
} else if ("上海".equals(city)) {
return "上海当前天气:小雨,温度22℃,湿度80%";
} else {
return "抱歉,暂不支持该城市天气查询";
}
}
@Tool("获取当前时间")
public String getCurrentTime() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
}
然后创建AI服务并绑定工具:
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
public class WeatherAssistant {
interface Assistant {
String chat(String userMessage);
}
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4")
.build();
Assistant assistant = AiServices.builder(Assistant.class)
.chatLanguageModel(model)
.tools(new WeatherTool()) // 注册工具
.build();
// 用户提问
String response = assistant.chat("北京现在天气怎么样?");
System.out.println(response);
response = assistant.chat("现在几点了?");
System.out.println(response);
}
}
当用户问天气时,模型会判断需要调用getWeather函数,LangChain4j自动处理了函数调用的整个流程,最后把结果整合成自然语言返回。
2.3 Function Calling的核心价值
让AI从“静态知识”变成“动态能力”。
没有Function Calling,AI只能回答训练数据里的内容;有了它,AI可以实时获取最新信息,甚至可以操作你的系统。
第三层:Agent——会思考、会规划的“智能体”
Function Calling让AI能调用工具,但它还是被动的一问一答。
更多推荐



所有评论(0)