| 场景 |
以前 |
现在 |
| 🤖 Java应用想用AI |
写一堆HTTP客户端代码 |
引入SDK,几行搞定 |
| 🌐 想换个大模型 |
重写整个调用逻辑 |
换一个Provider就行 |
| 🔧 需要Agent能力 |
自己实现Agent循环 |
内置AgentCore,开箱即用 |
| 🔌 需要本地模型 |
不知道咋集成 |
OllamaProvider直接支持 |
⚡ 一个SDK,调用10+大模型 🔥
| 模型 |
Provider |
特点 |
| 🟣 Claude |
Anthropic |
编程能力最强 |
| 🔵 GPT-4o |
OpenAI |
生态最全 |
| 🟡 Gemini |
Google |
视觉能力强 |
| ☁️ Azure OpenAI |
Microsoft |
企业级 |
| 模型 |
Provider |
特点 |
| 🟢 DeepSeek |
深度求索 |
性价比之王 |
| 🌙 月之暗面 |
Moonshot |
128K超长上下文 |
| 📊 智谱GLM |
Zhipu |
免费额度 |
| 🐲 通义千问 |
Tongyi |
阿里生态 |
| ⭐ 讯飞星火 |
Spark |
语音领域强 |
| 🏠 本地模型 |
Ollama |
Llama3/Qwen2本地运行 |
// 换模型就像换开关一样简单
Provider provider = new DeepSeekProvider(config); // 换DeepSeek
Provider provider = new OpenAIProvider(config); // 换OpenAI
Provider provider = new ZhipuProvider(config); // 换智谱
// ... 10+ Provider任你选
claude-code-java/
├── src/main/java/com/claude/codegen/
│ ├── ClaudeCode.java # 主入口
│ ├── core/
│ │ └── AgentCore.java # 🤖 Agent核心循环
│ ├── provider/ # 🔌 大模型Provider
│ │ ├── Provider.java # Provider接口
│ │ ├── ProviderFactory.java # 工厂类
│ │ ├── AnthropicProvider.java
│ │ ├── OpenAIProvider.java
│ │ ├── DeepSeekProvider.java
│ │ ├── GeminiProvider.java
│ │ ├── AzureOpenAIProvider.java
│ │ ├── OllamaProvider.java
│ │ ├── MoonshotProvider.java
│ │ ├── ZhipuProvider.java
│ │ ├── TongyiProvider.java
│ │ └── SparkProvider.java
│ ├── tools/ # 🛠️ 内置工具
│ │ ├── ToolSchema.java # 工具定义
│ │ ├── FileTool.java # 文件读写
│ │ ├── BashTool.java # Shell执行
│ │ ├── SearchTool.java # 网络搜索
│ │ └── DefaultTools.java # 默认工具集
│ └── types/ # 📝 类型定义
│ ├── ConversationItem.java
│ ├── ContentBlock.java
│ └── ProviderEvent.java
└── pom.xml
<!-- pom.xml -->
<dependency>
<groupId>com.claude</groupId>
<artifactId>claude-code-java</artifactId>
<version>1.0.0</version>
</dependency>
import com.claude.codegen.*;
import com.claude.codegen.provider.*;
// 创建Provider(以DeepSeek为例)
DeepSeekProvider provider = DeepSeekProvider.builder()
.apiKey("sk-xxx")
.defaultModel("deepseek-chat")
.build();
// 创建Agent
AgentCore agent = new AgentCore(provider);
// 添加内置工具
agent.addTools(DefaultTools.getDefaultTools());
// 开始对话
agent.chat("帮我写一个Hello World程序");
agent.chat("解释一下什么是AI", event -> {
if (event instanceof ProviderEvent.AddContentBlock acb) {
// 开始新内容块
} else if (event instanceof ProviderEvent.UpdateContentBlock ucb) {
// 更新内容(流式输出)
System.out.print(ucb.getDelta());
} else if (event instanceof ProviderEvent.EndMessage) {
// 对话结束
}
});
| 工具 |
功能 |
示例 |
| 📁 FileTool |
文件读写 |
读取/写入文件 |
| 🔧 BashTool |
Shell执行 |
运行命令 |
| 🔍 SearchTool |
网络搜索 |
搜索信息 |
// 创建自定义工具
ToolSchema<ReadFileInput> readFileTool = ToolSchema.<ReadFileInput>builder()
.name("read_file")
.description("读取文件内容")
.inputSchema(ReadFileInput.class)
.handler((input) -> {
return Files.readString(Path.of(input.path));
})
.build();
agent.addTool(readFileTool);
// 让AI帮你写代码
agent.chat("用Java写一个快速排序");
// 构建知识库 + RAG
agent.chat("你们支持退换货吗?");
// 自动审查代码
agent.chat("审查这段代码有什么问题:\n" + code);
// 使用本地Ollama模型
OllamaProvider provider = OllamaProvider.builder()
.defaultModel("llama3")
.build();
// 完全离线可用!
| 特性 |
Claude Code Java |
LangChain4j |
Spring AI |
| 🤖 Agent核心 |
✅ 原生支持 |
⚠️ 有限 |
⚠️ 有限 |
| 🔌 Provider数量 |
10+ |
5 |
8 |
| 🇨🇳 国产模型 |
6个全支持 |
少 |
少 |
| 🏠 本地模型 |
Ollama |
Ollama |
无 |
| 📦 体积 |
轻量 |
重 |
重 |
| 📝 流式输出 |
✅ SSE |
✅ |
✅ |
DeepSeekProvider.Config config = DeepSeekProvider.Config.builder()
.apiKey("sk-xxx")
.defaultModel("deepseek-chat")
.maxTokens(4096)
.build();
ZhipuProvider.Config config = ZhipuProvider.Config.builder()
.apiKey("xxx")
.defaultModel("glm-4-flash") // 免费版
.build();
OllamaProvider.Config config = OllamaProvider.Config.builder()
.baseUrl("http://localhost:11434/api/chat")
.defaultModel("llama3")
.build();
// 无需API Key,完全免费!
MIT License - 商用免费 · 欢迎商用
# Fork 项目
git clone https://github.com/nplszfl/claude-code-java.git
# 添加新Provider
# 1. 实现Provider接口
# 2. 在ProviderFactory注册
# 3. 提交PR