Add File
This commit is contained in:
274
readme.md
Normal file
274
readme.md
Normal file
@@ -0,0 +1,274 @@
|
|||||||
|
<h4 align="right"><a href="./readme.md">English</a> | <strong>简体中文</strong> | <a href="./readme_ja.md">日本語</a></h4>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="./docs/assets/images/banner.png"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Agents-Flex: 一个基于 Java 的 LLM(大语言模型)应用开发框架。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 基本能力
|
||||||
|
|
||||||
|
- LLM 的访问能力
|
||||||
|
- Prompt、Prompt Template 定义加载的能力
|
||||||
|
- Function Calling 定义、调用和执行等能力
|
||||||
|
- 记忆的能力(Memory)
|
||||||
|
- Embedding
|
||||||
|
- Vector Store
|
||||||
|
- 文档处理
|
||||||
|
- 加载器(Loader)
|
||||||
|
- Http
|
||||||
|
- FileSystem
|
||||||
|
- 分割器(Splitter)
|
||||||
|
- 解析器(Parser)
|
||||||
|
- PoiParser
|
||||||
|
- PdfBoxParser
|
||||||
|
- Chain 执行链
|
||||||
|
- SequentialChain 顺序执行链
|
||||||
|
- ParallelChain 并发(并行)执行链
|
||||||
|
- LoopChain 循环执行连
|
||||||
|
- ChainNode
|
||||||
|
- AgentNode Agent 执行节点
|
||||||
|
- EndNode 终点节点
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 简单对话
|
||||||
|
|
||||||
|
使用 OpenAI 大语言模型:
|
||||||
|
|
||||||
|
```java
|
||||||
|
@Test
|
||||||
|
public void testChat() {
|
||||||
|
OpenAILlmConfig config = new OpenAILlmConfig();
|
||||||
|
config.setApiKey("sk-rts5NF6n*******");
|
||||||
|
|
||||||
|
Llm llm = new OpenAILlm(config);
|
||||||
|
String response = llm.chat("请问你叫什么名字");
|
||||||
|
|
||||||
|
System.out.println(response);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 “通义千问” 大语言模型:
|
||||||
|
|
||||||
|
```java
|
||||||
|
@Test
|
||||||
|
public void testChat() {
|
||||||
|
QwenLlmConfig config = new QwenLlmConfig();
|
||||||
|
config.setApiKey("sk-28a6be3236****");
|
||||||
|
config.setModel("qwen-turbo");
|
||||||
|
|
||||||
|
Llm llm = new QwenLlm(config);
|
||||||
|
String response = llm.chat("请问你叫什么名字");
|
||||||
|
|
||||||
|
System.out.println(response);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 “讯飞星火” 大语言模型:
|
||||||
|
|
||||||
|
```java
|
||||||
|
@Test
|
||||||
|
public void testChat() {
|
||||||
|
SparkLlmConfig config = new SparkLlmConfig();
|
||||||
|
config.setAppId("****");
|
||||||
|
config.setApiKey("****");
|
||||||
|
config.setApiSecret("****");
|
||||||
|
|
||||||
|
Llm llm = new SparkLlm(config);
|
||||||
|
String response = llm.chat("请问你叫什么名字");
|
||||||
|
|
||||||
|
System.out.println(response);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 历史对话示例
|
||||||
|
|
||||||
|
|
||||||
|
```java
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SparkLlmConfig config = new SparkLlmConfig();
|
||||||
|
config.setAppId("****");
|
||||||
|
config.setApiKey("****");
|
||||||
|
config.setApiSecret("****");
|
||||||
|
|
||||||
|
Llm llm = new SparkLlm(config);
|
||||||
|
|
||||||
|
HistoriesPrompt prompt = new HistoriesPrompt();
|
||||||
|
|
||||||
|
System.out.println("您想问什么?");
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
String userInput = scanner.nextLine();
|
||||||
|
|
||||||
|
while (userInput != null) {
|
||||||
|
|
||||||
|
prompt.addMessage(new HumanMessage(userInput));
|
||||||
|
|
||||||
|
llm.chatStream(prompt, (context, response) -> {
|
||||||
|
System.out.println(">>>> " + response.getMessage().getContent());
|
||||||
|
});
|
||||||
|
|
||||||
|
userInput = scanner.nextLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Function Calling
|
||||||
|
|
||||||
|
- 第一步: 通过注解定义本地方法
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class WeatherUtil {
|
||||||
|
|
||||||
|
@FunctionDef(name = "get_the_weather_info", description = "get the weather info")
|
||||||
|
public static String getWeatherInfo(
|
||||||
|
@FunctionParam(name = "city", description = "the city name") String name
|
||||||
|
) {
|
||||||
|
//在这里,我们应该通过第三方接口调用 api 信息
|
||||||
|
return name + "的天气是阴转多云。 ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- 第二步: 通过 Prompt、Functions 传入给大模型,然后得到结果
|
||||||
|
|
||||||
|
```java
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
OpenAILlmConfig config = new OpenAILlmConfig();
|
||||||
|
config.setApiKey("sk-rts5NF6n*******");
|
||||||
|
|
||||||
|
OpenAILlm llm = new OpenAILlm(config);
|
||||||
|
|
||||||
|
FunctionPrompt prompt = new FunctionPrompt("今天北京的天气怎么样", WeatherUtil.class);
|
||||||
|
FunctionResultResponse response = llm.chat(prompt);
|
||||||
|
|
||||||
|
Object result = response.getFunctionResult();
|
||||||
|
|
||||||
|
System.out.println(result);
|
||||||
|
//"北京的天气是阴转多云。 "
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 生态支持
|
||||||
|
|
||||||
|
### 大语言模型
|
||||||
|
|
||||||
|
|
||||||
|
| 大语言模型名称 | 支持情况 | 描述 |
|
||||||
|
|-------------------------------|--------|-------|
|
||||||
|
| ChatGPT | ✅ 已支持 | - |
|
||||||
|
| Ollama 部署模型 | ✅ 已支持 | - |
|
||||||
|
| 星火大模型 | ✅ 已支持 | - |
|
||||||
|
| 通义千问 | ✅ 已支持 | - |
|
||||||
|
| 智普 ChatGLM | ✅ 已支持 | - |
|
||||||
|
| 月之暗面 Moonshot | ✅ 已支持 | - |
|
||||||
|
| 扣子 Coze | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - Qwen2-7B-Instruct | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - Qwen2-72B-Instruct | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - Yi-1.5-34B-Chat | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - glm-4-9b-chat | ✅ 已支持 | - |
|
||||||
|
| 文心一言 | 计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
### 图片生成模型
|
||||||
|
|
||||||
|
|
||||||
|
| 大语言模型名称 | 支持情况 | 描述 |
|
||||||
|
|---------------------------------------------|--------|-------|
|
||||||
|
| Openai | ✅ 已支持 | - |
|
||||||
|
| Stability | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - stable-diffusion-3-medium | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - FLUX.1-schnell | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - stable-diffusion-xl-base-1.0 | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - Kolors | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Flux.1-schnell | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Stable Diffusion 3 | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Stable Diffusion XL | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Stable Diffusion 2.1 | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Stable Diffusion Turbo | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Stable Diffusion XL Turbo | ✅ 已支持 | - |
|
||||||
|
| SiliconFlow - Stable Diffusion XL Lighting | ✅ 已支持 | - |
|
||||||
|
| 更多 |计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Function Calling 方法调用
|
||||||
|
|
||||||
|
| 大语言模型名称 | 支持情况 | 描述 |
|
||||||
|
|-----------------------------|--------|-------|
|
||||||
|
| Openai | ✅ 已支持 | - |
|
||||||
|
| 星火大模型 | ✅ 已支持 | - |
|
||||||
|
| 智普 ChatGLM | ✅ 已支持 | - |
|
||||||
|
| Ollama | ✅ 已支持 | - |
|
||||||
|
| 通义千问 | ✅ 已支持 | - |
|
||||||
|
| 更多 |计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
### 多模态
|
||||||
|
|
||||||
|
| 大语言模型名称 | 支持情况 | 描述 |
|
||||||
|
|-----------------------------|--------|-------|
|
||||||
|
| Openai | ✅ 已支持 | - |
|
||||||
|
| Ollama | ✅ 已支持 | - |
|
||||||
|
| 更多 |计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
### 向量化模型
|
||||||
|
|
||||||
|
| 大语言模型名称 | 支持情况 | 描述 |
|
||||||
|
|-----------------------------|--------|-------|
|
||||||
|
| Openai | ✅ 已支持 | - |
|
||||||
|
| 星火大模型 | ✅ 已支持 | - |
|
||||||
|
| 智普 ChatGLM | ✅ 已支持 | - |
|
||||||
|
| Ollama | ✅ 已支持 | - |
|
||||||
|
| 通义千问 | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - bge-small-zh-v1.5 | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - bge-large-zh-v1.5 | ✅ 已支持 | - |
|
||||||
|
| GiteeAI - bge-m3 | ✅ 已支持 | - |
|
||||||
|
| 更多 |计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
### 向量存储(向量数据库)
|
||||||
|
|
||||||
|
| 向量数据库名称 | 支持情况 | 描述 |
|
||||||
|
|---------------|--------|----|
|
||||||
|
| Milvus | ✅ 已支持 | - |
|
||||||
|
| 阿里云向量数据存储服务 | ✅ 已支持 | - |
|
||||||
|
| 腾讯云向量数据存储服务 | ✅ 已支持 | - |
|
||||||
|
| OpenSearch | ✅ 已支持 | - |
|
||||||
|
| ElasticSearch | ✅ 已支持 | - |
|
||||||
|
| Redis | ✅ 已支持 | - |
|
||||||
|
| Chroma | 计划中... | 期待 PR |
|
||||||
|
| Cassandra | 计划中... | 期待 PR |
|
||||||
|
| Gemfire | 计划中... | 期待 PR |
|
||||||
|
| Weaviate | 计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
### 文档解析器
|
||||||
|
|
||||||
|
|
||||||
|
| 向量数据库名称 | 支持情况 | 描述 |
|
||||||
|
|---------------|--------|--------------|
|
||||||
|
| PDFBox | ✅ 已支持 | 用于解析 PDF 文档 |
|
||||||
|
| POI | ✅ 已支持 | 用于解析 Word 文档 |
|
||||||
|
| OmniParse | ✅ 已支持 | 更丰富的解析能力 |
|
||||||
|
| 更多 |计划中... | 期待 PR |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Star 用户专属交流群
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 模块构成
|
||||||
|
|
||||||
|

|
||||||
Reference in New Issue
Block a user