Skip to content

Java AI Agent Framework

Agents-flex为 Java 构建可靠的 AI Agent

不只文本对话,更把图片、音频、视频模型,以及知识、工具、技能与多智能体协同,组织成真正能够完成任务的系统,并提供面向生产环境的路由、重试与可观测能力。

多模型(文本、图片、音频、视频)Tool CallingRAGMCPSkills & Sandbox
QuickStart.javaagents-flex
ChatModel model = OpenAIChatConfig.builder()
    .model("Qwen3-32B")
    .apiKey(System.getenv("API_KEY"))
    .buildModel();

String answer = model.chat(
    "分析这份产品需求"
);
Model connectedJava API
Image

Interactive Capability Map

从模型到生产落地的
一套 Java AI 工程栈

不把 AI 应用拆成孤立功能点,而是按真实开发流程组织:接入模型,连接工具与知识,再完成 Agent 编排和生产可观测。

AFAgents-Flex统一工程底座
01 / MODEL

统一模型抽象

统一接入对话、图片、视频、Embedding、Rerank 与语音模型。

流式响应模型路由多协议
02 / AGENT

工具与智能体编排

连接 Java 方法、MCP、Skills 与 Subagent,组织复杂任务流程。

Tool CallingReActRouting
03 / KNOWLEDGE

RAG 与结构化知识

覆盖文档处理、向量检索、重排、WebSearch 与层级知识导航。

Vector StoreRerankLLM Wiki
04 / PRODUCTION

生产级保障

提供路由、重试熔断、调用链追踪、指标采集与自动配置。

RetryOpenTelemetrySpring Boot
模型层编排层知识层生产层四层能力协同

Skills / Sandbox

把能力装进 Skill把风险留在 Sandbox

操作说明、脚本、参考资料和模板组成可复用的 Skill。统一的 SkillRuntime 接管命令与文件能力,让同一套 Skill 可以在本机开发,也可以进入远程隔离环境运行。

阅读 Skills 与 Sandbox 指南
01按需加载

选中后再读取完整 Skill,脚本和素材不挤占初始上下文。

02边界一致

命令与文件工具共享同一个 Runtime,执行不会意外越界。

03产物直达

生成文件可下载到本地,也可发布为用户可访问的 URL。

Multimodal Generation

不止文本,统一构建
图片、语音与视频

通过稳定的 Java 接口屏蔽不同服务商的请求与响应差异,让内容生成、实时语音交互和异步视频任务自然接入现有业务系统。

Agents-Flex多模态生成
模型已连接
当前任务

为产品发布稿生成主视觉、中文旁白和 6 秒演示视频。

AF正在编排多模态任务
  1. 01提取视觉主题与镜头节奏
  2. 02选择匹配的模型与生成参数
  3. 03并行执行并统一返回结果
统一请求自动路由流式返回
模型路由4 个任务并行执行
JAVA API
01
IMAGE MODEL

图片生成

文生图、图片编辑与变体

已就绪
02
STREAMING TTS

文字转语音

音色、语速与流式输出

流式中
03
SPEECH TO TEXT

语音转文字

文件、URL 与音频流输入

已识别
04
VIDEO MODEL

视频生成

异步任务与状态追踪

生成中

Development Flow

一条更贴近工程实践的开发路径

01接入模型

按场景配置 ChatModel、ImageModel、语音模型或 VideoModel。

02暴露工具

用注解或 Builder 将 Java 业务方法变成 Agent 可调用工具。

03接入知识

组合 RAG、WebSearch、LLM Wiki,为回答提供外部上下文。

04编排 Agent

用 ReAct、Routing、Subagent 处理多步骤和多角色任务。

05上线观测

接入路由、重试、熔断和 OpenTelemetry,稳定运行。

Use Cases

适合这些 AI 应用场景

Agents-Flex 更偏向“可集成、可扩展、可上线”的 Java 框架,而不是只能演示单轮对话的样例工程。

Quick Start

几行代码完成一次模型调用

Agents-Flex 不要求你重写现有应用结构。你可以先从一个 ChatModel 开始,再按业务需要接入图片、语音、视频、工具和知识库。

ChatModel model = OpenAIChatConfig.builder()
    .endpoint("https://ai.gitee.com")
    .provider("GiteeAI")
    .model("Qwen3-32B")
    .apiKey(System.getenv("GITEE_API_KEY"))
    .buildModel();

String answer = model.chat("介绍一下 Agents-Flex");
System.out.println(answer);

Multimodal Examples

用一致的 API 处理图片、语音与视频

以下代码展示每类能力的核心调用路径。服务商依赖、鉴权参数和完整异常处理请进入对应文档查看。

Image

生成并保存图片

图片文档
OpenAIImageModelConfig config = new OpenAIImageModelConfig();
config.setApiKey(System.getenv("OPENAI_API_KEY"));
ImageModel model = new OpenAIImageModel(config);

GenerateImageRequest request = new GenerateImageRequest();
request.setPrompt("雨后的未来城市,电影感光影");
request.setSize(1024, 1024);

ImageResponse response = model.generate(request);
response.getImages().get(0)
    .writeToFile(new File("output/city.png"));
TTS

将文本合成为语音

TTS 文档
AliyunTextToSpeechConfig config = new AliyunTextToSpeechConfig();
config.setAppKey(System.getenv("ALIYUN_APP_KEY"));
config.setAccessKeyId(System.getenv("ALIYUN_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIYUN_ACCESS_KEY_SECRET"));

TextToSpeechModel model = new AliyunTextToSpeechModel(config);
TextToSpeechRequest request = new TextToSpeechRequest(
    "欢迎使用 Agents-Flex 多模态能力"
);
TextToSpeechResponse response = model.tts(request);
response.writeTo(new File("output/reply.mp3"));
STT

将音频转写为文本

STT 文档
AliyunSpeechToTextConfig config = new AliyunSpeechToTextConfig();
config.setAppKey(System.getenv("ALIYUN_APP_KEY"));
config.setAccessKeyId(System.getenv("ALIYUN_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIYUN_ACCESS_KEY_SECRET"));

SpeechToTextModel model = new AliyunSpeechToTextModel(config);
SpeechToTextRequest request = new SpeechToTextRequest();
request.setAudioFile(new File("meeting.mp3"));

SpeechToTextResponse response = model.stt(request);
System.out.println(response.getResult());
Video

视频生成并保存到本地

视频文档
AliyunWanVideoModelConfig config = new AliyunWanVideoModelConfig();
config.setApiKey(System.getenv("DASHSCOPE_API_KEY"));
AliyunWanVideoModel model = new AliyunWanVideoModel(config);

GenerateVideoRequest request = new GenerateVideoRequest();
request.setPrompt("纸飞机飞过日出时的未来城市");
request.setSize(1280, 720);
request.setDuration(5);

VideoResponse response = model.generateAndWait(request);
response.getVideo().writeToFile(
    new File("output/city.mp4")
);