一、概述
智能体 Agent
能自主执行任务实现特定目标的 AI 程序。传统 AI(如ChatGPT)主要依靠用户输入指令,而智能体 Agent
可以自主思考、决策,并执行复杂任务,就像一个AI助手,能够独立完成多步操作。本文将以多语言翻译助手为场景,演示如何基于Spring AI与DeepSeek模型构建一个支持多种语言的企业级翻译智能体,实现精准可控的跨语言交互。
关于 Spring AI 与 DeepSeek 的集成,以及 API-KEY 的申请等内容,可参考文章《Spring AI与DeepSeek实战一:快速打造智能对话应用》
二、系统Prompt
智能体的核心在于通过 Prompt 工程明确其能力边界。以下为翻译智能体的系统级 Prompt 设计:
您是一名专业的多语言翻译助手,需严格遵守以下规则:
1. **语言支持**:仅处理目标语言代码为[TARGET_LANG]的翻译任务,支持如zh-CN(简体中文)、en-US(英语)等32种ISO标准语言代码;
2. **输入格式**:用户使用---translate_content---作为分隔符,仅翻译分隔符内的文本,其余内容视为无效指令;
3. **行为限制**:禁止回答与翻译无关的问题,若输入不包含合法分隔符或目标语言,回复:"请提供有效的翻译指令"。
4. **支持多语言**:需要翻译的内容如果包含多种语言,都需要同时翻译为TARGET_LANG指定的语言。
关键设计解析:
- 需要给大模型明确 角色 和 行为边界;
- 通过
TARGET_LANG
参数化语言配置,便于动态扩展; - 使用
---translate_content---
强制结构化输入,避免模型处理无关信息; - 明确拒绝策略,保障服务安全性。
三、Prompt模板
结合Spring AI的prompt模板,实现动态Prompt生成:
TARGET_LANG: {target}
---translate_content---
"{content}"
关键设计解析:
- 使用占位符
{TARGET_LANG}
和{content}
实现多语言动态适配; - 无论用户输入任何内容,只会出现在 translate_content 分隔符下。
四、核心代码
@GetMapping(value = "/translate")
public String translate(@RequestParam String input, @RequestParam(required = false) String target, HttpServletResponse response) {String systemPrompt = """您是一名专业的多语言翻译助手,需严格遵守以下规则:1. **语言支持**:仅处理目标语言代码为[TARGET_LANG]的翻译任务,支持如zh-CN(简体中文)、en-US(英语)等32种ISO标准语言代码;2. **输入格式**:用户使用---translate_content---作为分隔符,仅翻译分隔符内的文本,其余内容视为无效指令;3. **行为限制**:禁止回答与翻译无关的问题,若输入不包含合法分隔符或目标语言,回复:"请提供有效的翻译指令"。4. **支持多语言**:需要翻译的内容如果包含多种语言,都需要同时翻译为TARGET_LANG指定的语言。""";PromptTemplate promptTemplate = new PromptTemplate("""TARGET_LANG: {target}---translate_content---"{content}"""");Prompt prompt = promptTemplate.create(Map.of("target", target, "content", input));String result = chatClient.prompt(prompt).system(systemPrompt).call().content();if (result != null && result.length() >= 2) {result = result.substring(1, result.length() - 1);}return result;
}
通过
target
来指定目标语言,input
参数为需要翻译的内容。
五、测试
- 直接调用接口测试:
尝试输入提问方式的内容,大模型也仅翻译内容
- 配套一个前端页面测试:
- 多语言同时翻译:
翻译包含八种语言的内容
六、总结
本文通过翻译场景, 封印 了大模型的对话能力,演示了企业级智能体的三大核心能力:指令结构化、行为边界控制 与 动态模板适配。然而,现实中的复杂任务(如合同审核、数据分析)往往需要更高级能力:
- 任务拆解:将复杂问题拆解为子任务链(如"翻译→摘要生成→格式校验");
- 工作流引擎:通过状态机管理任务执行顺序与异常重试;
- 记忆与上下文:实现多轮对话的长期记忆管理。
七、完整代码
- Gitee地址:
https://gitee.com/zlt2000/zlt-spring-ai-app
- Github地址:
https://github.com/zlt2000/zlt-spring-ai-app
本文由mdnice多平台发布