# llama-java
**Repository Path**: HesenjanJava/llama-java
## Basic Information
- **Project Name**: llama-java
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-04-18
- **Last Updated**: 2024-04-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🚀 Octet.Chat
[](https://github.com/eoctet/octet.chat/actions/workflows/maven_build_deploy.yml)
[](https://mvnrepository.com/artifact/chat.octet/llama-java-core)
[](./README.md)
[](https://opensource.org/licenses/MIT)
这是一个Java实现的LLMs项目。你可以用它部署自己的私有服务,支持 `Llama2` 和 `GPT` 模型及其他开源模型。
#### 提供
- 简单易用的Java库 `llama-java-core`
- 完整的应用服务 `octet-chat-app`
- `服务端部署`,快速实现私有化服务
- `命令行交互`,简单的本地聊天交互
#### 主要特点
- 🦙 基于 [`llama.cpp`](https://github.com/ggerganov/llama.cpp) 构建
- 😊 支持 `AI Agent`,基于 `Qwen-chat` 实现 `Function calling`
- 🤖 支持 `并行推理`、`连续对话` 和 `文本生成`
- 📦 支持 `Llama2` 和 `GPT` 模型及其他开源模型,例如:`Baichuan 7B`、`Qwen 7B`
----
最近更新
...
- [X] 🚀 新增自定义AI角色、优化OpenAPI
- [X] 🚀 新增AI智能体,可调用插件的能力
- [X] 🚀 支持动态温度采样
- [X] 🚀 Octet-chat-app 增加了 WebUI
## 快速开始
> [!NOTE]
>
> 你可以自行量化原始模型或搜索 `huggingface` 获取开源模型。
### 🤖 命令行交互
__如何使用__
编辑 `characters.template.json` 设置一个自定义的AI角色。
示例角色
```json
{
"name": "Assistant Octet",
"agent_mode": false,
"prompt": "Answer the questions.",
"model_parameter": {
"model_path": "/models/ggml-model-7b_m-q6_k.gguf",
"model_type": "LLAMA2",
"context_size": 4096,
"threads": 6,
"threads_batch": 6,
"mmap": true,
"mlock": false,
"verbose": true
},
"generate_parameter": {
"temperature": 0.85,
"repeat_penalty": 1.2,
"top_k": 40,
"top_p": 0.9,
"verbose_prompt": true,
"user": "User",
"assistant": "Octet"
}
}
```
运行命令行交互并指定刚才设置的角色名称,开始聊天:
```bash
java -jar octet-chat-app.jar --character YOUR_CHARACTER
```
> [!TIP]
>
> 使用 `help` 查看更多参数,示例如下:
```bash
java -jar octet-chat-app.jar --help
usage: Octet.Chat
--app App launch type: cli | api (default: cli).
-c,--completions Use completions mode.
-ch,--character Load the specified AI character, default:
llama2-chat.
-h,--help Show this help message and exit.
-q,--questions Load the specified user question list, example:
/PATH/questions.txt.
```
### 🚀 AI Agent
> [!NOTE]
>
> 实现基于 `Qwen-chat` 系列模型,更多信息请参考:[Qwen Github](https://github.com/QwenLM/Qwen)
__如何使用__
下载 `Qwen-chat` 模型,编辑 [`octet.json`](octet-chat-app/characters/octet.json) 设置模型文件路径,将 `agent_mode` 修改为 `true` 即可开启智能体模式。
* 目前实现了两个插件,作为示例你可以继续丰富扩展它们。
| 插件 | 描述 |
|------|------------------------------------|
| 时间查询 | 可以查询当前系统时间的插件。 |
| 接口调用 | 通用的接口调用插件,基于此你可以实现天气、文生图、搜索等服务的接入。 |
> 插件配置文件示例:[plugins.json](octet-chat-app/characters/plugins.json)

### 🖥 Web UI
__如何使用__
和命令行交互一样,首先设置一个自定义的AI角色。
启动服务,打开浏览器开始聊天,默认地址:`http://YOUR_IP_ADDR:8152/`
```bash
# Default URL: http://YOUR_IP_ADDR:8152/
cd /octet-chat-app
bash app_server.sh start YOUR_CHARACTER
```

> [!TIP]
>
> 你也可以将API服务集成到你的应用中,例如:`VsCode`、`App`、`Wechat`等。
如何调用API
> Api docs: http://127.0.0.1:8152/swagger-ui.html
```shell
curl --location 'http://127.0.0.1:8152/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "USER",
"content": "Who are you?"
}
],
"user": "User",
"stream": true
}'
```
接口将以流的方式返回数据:
```json
{
"id": "octetchat-98fhd2dvj7",
"model": "Llama2-chat",
"created": 1695614393810,
"choices": [
{
"index": 0,
"delta": {
"content": "你好"
},
"finish_reason": "NONE"
}
]
}
```
## 帮助文档
__开发文档__
- __[开发手册](https://github.com/eoctet/octet.chat/wiki/开发手册)__
- __[Development manual](https://github.com/eoctet/octet.chat/wiki/Development-manual)__
__角色配置__
- __[Llama Java Parameter](https://github.com/eoctet/octet.chat/wiki/Llama-Java-parameters)__
- __[characters.template.json](octet-chat-app/characters/characters.template.json)__
## 免责声明
> [!IMPORTANT]
>
> - 本项目不提供任何模型,请自行获取模型文件并遵守相关协议。
> - 请勿将本项目用于非法用途,包括但不限于商业用途、盈利用途、以及违反法律法规的用途。
> - 因使用本项目所产生的任何法律责任,由使用者自行承担,本项目不承担任何法律责任。
## 问题反馈
- 如果你有任何疑问,欢迎在GitHub Issue中提交。