mirror of
https://gitee.com/agents-flex/agents-flex.git
synced 2024-11-29 18:38:17 +08:00
169 lines
3.9 KiB
Markdown
169 lines
3.9 KiB
Markdown
<h4 align="right"><a href="./readme.md">English</a> | <a href="./readme_zh.md">简体中文</a> | <strong>日本語</strong></h4>
|
|
|
|
<p align="center">
|
|
<img src="./docs/assets/images/banner.png"/>
|
|
</p>
|
|
|
|
|
|
# Agents-Flexは、JavaベースのLangChainのようなLLMアプリケーションフレームワークです。
|
|
|
|
---
|
|
|
|
## 機能
|
|
|
|
- LLMアクセス
|
|
- プロンプト、プロンプトテンプレート
|
|
- 関数呼び出しの定義、呼び出し、実行
|
|
- メモリ
|
|
- 埋め込み
|
|
- ベクトルストア
|
|
- リソースローダー
|
|
- ドキュメント
|
|
- 分割器
|
|
- ローダー
|
|
- パーサー
|
|
- PoiParser
|
|
- PdfBoxParser
|
|
- エージェント
|
|
- LLMエージェント
|
|
- チェーン
|
|
- シーケンシャルチェーン
|
|
- パラレルチェーン
|
|
- ループチェーン
|
|
- チェーンノード
|
|
- エージェントノード
|
|
- エンドノード
|
|
- ルーターノード
|
|
- GroovyRouterNode
|
|
- QLExpressRouterNode
|
|
- LLMRouterNode
|
|
|
|
## 簡単なチャット
|
|
|
|
OpenAi LLMを使用:
|
|
|
|
```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);
|
|
}
|
|
```
|
|
|
|
|
|
Qwen LLMを使用:
|
|
|
|
```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);
|
|
}
|
|
```
|
|
|
|
|
|
SparkAi LLMを使用:
|
|
|
|
```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();
|
|
}
|
|
}
|
|
```
|
|
|
|
## 関数呼び出し
|
|
|
|
- ステップ1: ネイティブ関数を定義
|
|
|
|
```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 + "の天気は曇り時々晴れです。";
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
- ステップ2: LLMから関数を呼び出す
|
|
|
|
```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);
|
|
//今日の北京の天気は曇り時々晴れです
|
|
}
|
|
```
|
|
|
|
|
|
## コミュニケーション
|
|
|
|
- Twitter: https://twitter.com/yangfuhai
|
|
|
|
## モジュール
|
|
|
|
![](./docs/assets/images/modules.jpg)
|