mirror of
https://gitee.com/agents-flex/agents-flex.git
synced 2024-12-02 03:48:11 +08:00
doc: update docs
This commit is contained in:
parent
37114f89dd
commit
f142103317
@ -49,21 +49,21 @@ const {Layout} = DefaultTheme
|
||||
<Layout>
|
||||
|
||||
<!--docs: https://vitepress.dev/guide/extending-default-theme#layout-slots-->
|
||||
<template #doc-before>
|
||||
<div style="margin-bottom: 30px">
|
||||
<a href="https://aiadmin.cc" target="_blank">
|
||||
<img src="/assets/images/admin-banner.jpg">
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
<!-- <template #doc-before>-->
|
||||
<!-- <div style="margin-bottom: 30px">-->
|
||||
<!-- <a href="https://aiadmin.cc" target="_blank">-->
|
||||
<!-- <img src="/assets/images/admin-banner.jpg">-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
|
||||
<template #home-features-after>
|
||||
<div class="banner-home">
|
||||
<a href="https://aiadmin.cc" target="_blank">
|
||||
<img src="/assets/images/admin-banner.jpg">
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
<!-- <template #home-features-after>-->
|
||||
<!-- <div class="banner-home">-->
|
||||
<!-- <a href="https://aiadmin.cc" target="_blank">-->
|
||||
<!-- <img src="/assets/images/admin-banner.jpg">-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
|
||||
</Layout>
|
||||
</template>
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Agents-Flex 是什么?
|
||||
|
||||
Agents-Flex 是一个 Java 开发的 AI 应用开发框架,是为了简化 AI 应用开发而生。 其灵感来源 LangChain、 LlamaIndex 以及作者作为一线 AI 应用开发工程师的最佳实践,提供了跨
|
||||
AI 服务商的、可移植的、不限 Java 开发框架的 API 支持。
|
||||
AI 服务商的、可移植的、可编排、不限 Java 开发框架的 API 支持。
|
||||
|
||||
Agents-Flex 适用于聊天、图像生成、Embedding 模型、Function Calling 以及 RAG 应用等场景,支持同步以及流式(Stream)的 API 选择。
|
||||
Agents-Flex 适用于聊天、图像生成、Embedding 模型、Function Calling 以及 RAG 应用、智能体编排等场景,支持同步以及流式(Stream)的 API 选择。
|
||||
|
||||
作者的其他开源框架,还包含了:
|
||||
- MyBatis-Flex:https://mybatis-flex.com
|
||||
- AiEditor:https://aieditor.dev
|
||||
- AiAdmin:官网正在建设中...
|
||||
- AiAdmin:https://aiadmin.cc
|
||||
|
||||
## Agents-Flex 和其他框架对比
|
||||
|
||||
@ -16,8 +16,8 @@ Agents-Flex 适用于聊天、图像生成、Embedding 模型、Function Calling
|
||||
|
||||
相比 `Spring-AI`、`LangChain4j` 而言,Agents-Flex 更具有普适性。
|
||||
|
||||
> 1) 比如 `Spring-AI` 要求的 JDK 版本必须是 `JDK 21+`,而 Agents-Flex 只需要 `JDK8+`。
|
||||
> 2) `Spring-AI` 要求必须在 Spring 框架下使用,而 Agents-Flex 支持与任何框架搭配,并提供了 `spring-boot-starter`。
|
||||
> 1) `Spring-AI` 要求的 JDK 版本必须是 `JDK 21+`,而 Agents-Flex 只需要 `JDK 8+`。
|
||||
> 2) `Spring-AI` 要求必须在 Spring 框架下使用,而 Agents-Flex 支持与任何的 JAVA 框架搭配使用,并提供了 `spring-boot-starter` 的支持。
|
||||
> 3) `Spring-AI`、`LangChain4j` 普遍不支持国内的大模型、Embedding 模型以及向量数据库,而 Agents-Flex 对国产服务支持友好。
|
||||
|
||||
**2、更简易的 API 设计**
|
||||
@ -61,7 +61,7 @@ public class WeatherUtil {
|
||||
}
|
||||
```
|
||||
|
||||
**2、更强大的 Agents 编排**
|
||||
**2、更强大的智能体编排**
|
||||
|
||||
我们知道,一个强大的 AI 应用,往往是需要灵活的编排能力来完成的, 相比 Agents-Flex 而言,`Spring-AI`、`LangChain4j`几乎没有编排的能力。
|
||||
|
||||
@ -69,16 +69,16 @@ public class WeatherUtil {
|
||||
|
||||
```java
|
||||
public static void main(String[] args) {
|
||||
SequentialChain ioChain1 = new SequentialChain();
|
||||
ioChain1.addNode(new Agent1("agent1"));
|
||||
ioChain1.addNode(new Agent2("agent2"));
|
||||
SequentialChain chain1 = new SequentialChain();
|
||||
chain1.addNode(new Agent1("agent1"));
|
||||
chain1.addNode(new Agent2("agent2"));
|
||||
|
||||
SequentialChain ioChain2 = new SequentialChain();
|
||||
ioChain2.addNode(new Agent1("agent3"));
|
||||
ioChain2.addNode(new Agent2("agent4"));
|
||||
ioChain2.addNode(ioChain1);
|
||||
SequentialChain chain2 = new SequentialChain();
|
||||
chain2.addNode(new Agent1("agent3"));
|
||||
chain2.addNode(new Agent2("agent4"));
|
||||
chain2.addNode(chain1);
|
||||
|
||||
ioChain2.registerEventListener(new ChainEventListener() {
|
||||
chain2.registerEventListener(new ChainEventListener() {
|
||||
@Override
|
||||
public void onEvent(ChainEvent event, Chain chain) {
|
||||
System.out.println(event);
|
||||
@ -86,7 +86,7 @@ public static void main(String[] args) {
|
||||
});
|
||||
|
||||
|
||||
Object result = ioChain2.executeForResult("your params");
|
||||
Object result = chain2.executeForResult("your params");
|
||||
System.out.println(result);
|
||||
}
|
||||
```
|
||||
|
@ -1 +1,77 @@
|
||||
# 历史对话
|
||||
|
||||
## 示例代码
|
||||
|
||||
历史对话 和 简单对话类似,只需要把 prompt 修改为 `HistoriesPrompt` 即可,代码如下:
|
||||
|
||||
```java
|
||||
public static void main(String[] args) {
|
||||
Llm llm = new OpenAiLlm.of("sk-rts5NF6n*******");
|
||||
|
||||
HistoriesPrompt prompt = new HistoriesPrompt();
|
||||
pormpt.addMessage(new HumanMessage("你叫什么名字?"));
|
||||
|
||||
String response = llm.chat(prompt);
|
||||
System.out.println(response);
|
||||
}
|
||||
```
|
||||
|
||||
## 连续对话
|
||||
|
||||
```java
|
||||
public static void main(String[] args) {
|
||||
System.out.println("请开始向 AI 提问!");
|
||||
|
||||
Llm llm = new OpenAiLlm.of("sk-rts5NF6n*******");
|
||||
HistoriesPrompt prompt = new HistoriesPrompt();
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
在以上的连续对话中,`HistoriesPrompt` 有一个成员变量 `memory` 用于存储所有的历史对话内容。
|
||||
默认的情况下,是使用内存进行存储,当我们需要对对话内容进行持久化时,只需要实现自己的 Memory 即可,示例代码如下:
|
||||
|
||||
```java
|
||||
public class DatabaseChatMemory implements ChatMemory {
|
||||
|
||||
@Override
|
||||
public List<Message> getMessages() {
|
||||
//从数据库查询所有的历史消息
|
||||
return Db.findList("select * from ....");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMessage(Message message) {
|
||||
//把消息添加到数据库
|
||||
Db.save(message);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
然后,在创建 `HistoriesPrompt` 时,传入自己的 `DatabaseChatMemory`,如下代码所示:
|
||||
|
||||
```java
|
||||
public static void main(String[] args) {
|
||||
|
||||
Llm llm = new OpenAiLlm.of("sk-rts5NF6n*******");
|
||||
|
||||
HistoriesPrompt prompt = new HistoriesPrompt(new DatabaseChatMemory());
|
||||
prompt.addMessage(new HumanMessage("user new question...."));
|
||||
|
||||
llm.chat(prompt);
|
||||
//....
|
||||
}
|
||||
```
|
||||
|
@ -1 +1,14 @@
|
||||
# 简单对话
|
||||
|
||||
## 示例代码
|
||||
|
||||
```java
|
||||
public static void main(String[] args) {
|
||||
Llm llm = new OpenAiLlm.of("sk-rts5NF6n*******");
|
||||
|
||||
Prompt prompt = new SimplePrompt("what is your name?");
|
||||
String response = llm.chat(prompt);
|
||||
|
||||
System.out.println(response);
|
||||
}
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user