# ailinker
**Repository Path**: shenxueyuan/ailinker
## Basic Information
- **Project Name**: ailinker
- **Description**: AI-LINKER 大模型后台服务系统
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-08-30
- **Last Updated**: 2024-08-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AiLinker
[TOC]
## 简介
### 1.1 系统特点
* 该系统基于python3.8开发,大模型以及后端语音服务对接解耦设计。
* 该系统节点间通信基于rabbitmq通信框架.
* 该系统通过websockets和硬件对接,实现AI聊天机器人、AI硬件控制终端等应用。
* 该系统旨在帮助初学者学习在线大模型服务、各语音服务api调用流程,以及和硬件对接流程。
### 1.2 目录架构
* common # 通用包目录
* configs #节点配置文件目录
* scripts #相关测试脚本目录
* deploy #应用部署和后台运行文件目录
* README.md
## 2.软件安装
### 2.1 系统软件安装
软件运行在Linux系统,我们的测试系统环境为ubuntu22.04,建议初学者使用相同版本,
其它Linux发行版也可参考本文档安装相关依赖。
#### 1安装rabbitmq server
```
$ sudo apt install rabbitmq-server
```
配置rabbitmq服务:
```
$ sudo rabbitmqctl add_user user 123456
$ sudo rabbitmqctl set_permissions -p / user ".*" ".*" ".*"
$ sudo rabbitmqctl set_user_tags user administrator
```
#### 2安装其它依赖软件
```
$ sudo apt install libopus-dev
$ sudo apt install ffmpeg
```
### 2.2 安装AILINKER
#### 1安装python虚拟环境管理工具,建议使用miniconda或者conda
* [miniconda安装参考1(中文)](https://www.cnblogs.com/jijunhao/p/17235904.html)
* [conda安装参考2](https://conda.io/projects/conda/en/latest/user-guide/install/index.html)
#### 2安装Ailinker后端服务
首先确保conda虚拟环境管理工具已经正确安装
```
$ git clone https://gitee.com/yumoutech/ailinker.git
$ cd ailinker
$ ./install.sh
```
## 3.运行
### 3.1运行服务前的准备工作
由于大模型接口,语音识别接口,语音合成接口都是用的在线服务接口,这里需要大家先去各家官网申请API KEY(具体申请方法查看docs目录下的文档),
并将获取到的相关信息,写入 env_setup.bash 文件方可正常运行。若没有该文件可以从docs目录下复制一份出来,运行以下命令。
```
# 确认当前在 ailinker 目录下
$ cp docs/example_env_setup.bash env_setup.bash
```
系统默认使用的是 openai-hk 的大模型接口,和火山引擎的语音服务,建议大家先申请这两个进行测试。具体申请办法,查看docs目录下的介绍文档或者点击下方链接:
1. [openai-hk大模型api key申请](https://gitee.com/yumoutech/ailinker/blob/master/docs/%E5%A4%A7%E6%A8%A1%E5%9E%8Bapikey%E7%94%B3%E8%AF%B7%E8%AF%B4%E6%98%8E(openai-hk)%E4%B8%AD%E8%BD%AC%E5%B9%B3%E5%8F%B0.md)
2. [火山引擎语音服务api key申请](https://gitee.com/yumoutech/ailinker/blob/master/docs/%E7%81%AB%E5%B1%B1%E5%BC%95%E6%93%8E%E8%AF%AD%E9%9F%B3%E6%9C%8D%E5%8A%A1apikey%E7%94%B3%E8%AF%B7%E8%AF%B4%E6%98%8E.md)
### 3.1运行rabbitmq服务
理论上安装完rabbitmq服务,系统会自动启动,这里我们看一下状态,确保rabbitmq服务器已经启动
```
$ sudo service rabbitmq-server status
```
输入如下,看到(running)即可
```
[sudo] password for deakin:
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-08-29 13:34:59 CST; 7h ago
Main PID: 835 (beam.smp)
Tasks: 27 (limit: 7084)
Memory: 142.1M
CPU: 35min 44.735s
CGroup: /system.slice/rabbitmq-server.service
├─ 835 /usr/lib/erlang/erts-12.2.1/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 12800>
├─ 943 erl_child_setup 65536
├─1706 inet_gethost 4
└─1707 inet_gethost 4
8月 29 13:34:56 ubuntu22-VirtualBox systemd[1]: Starting RabbitMQ Messaging Server...
8月 29 13:34:59 ubuntu22-VirtualBox systemd[1]: Started RabbitMQ Messaging Server.
```
若服务未启动,运行以下命令启动即可
```
$ sudo service rabbitmq-server start
```
### 3.3在前台运行ailinker服务
```
$ conda activate ailinker
$ source env_setup.bash
$ python app.py
```
此时如果已经配置好板子的IP和端口信息,重启板子就会看到板子自动连接到服务,连接成功后,板子LED为紫灯闪烁
### 3.4后台运行ailinker服务
前期测试的时候,可以在前端启动,测试没问题后,可以进入deploy目录运行启动脚本在后台启动服务。具体操作如下
```
$ cd deploy
$ ./run_app.sh # 运行后回车结束即可
```
查看后端运行是否正常
后台运行后可以打开该目录下的log文件,查看输出是否正常。
```
$ cat app.log
```
输出如下即可:
```
2024-08-29 20:43:20,095-app-INFO: main app start...
* Serving Flask app 'app'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8090
* Running on http://192.168.3.105:8090
Press CTRL+C to quit
```
## 4.目前支持的服务
### 大模型服务
当前大模型只支持openai SDK兼容的服务,但部分厂商兼容性一般,使用过程中可能不稳定。
| LLM服务 | 是否支持 | 兼容性 | 运行效果 | 模型效果 | 使用成本 |
| ---------------------- | -------- | ------ | ---------------------------------------------------------- | ---------------------- | -------- |
| **openai中转平台** | | | | | |
| gpt-4o | 是 | 好 | 较为稳定,响应速度取决于网络情况和中转服务商提供的服务质量 | 效果较好,建议使用 | 较高 |
| gpt-3.5-turbo | 是 | 好 | 较为稳定,响应速度取决于网络情况和中转服务商提供的服务质量 | 效果一般 | 较低 |
| 其它gpt模型 | 是 | 好 | / | / | / |
| | | | | | |
| **阿里灵积大模型** | | | | | |
| 通义千问 | 是 | 一般 | 稳定性一般,响应速度较快 | 理解能力和逻辑处理一般 | 较低 |
| 其它兼容open sdk的模型 | 是 | 一般 | / | / | / |
| | | | | | |
| **智谱AI** | 加入中 | | | | |
| | | | | | |
| **豆包大模型** | 加入中 | | | | |
| | | | | | |
### 语音服务
| 语音服务 | 是否支持 | 运行效果 | 使用效果 | 使用成本 |
| ---------------- | -------- | ------------------------------------ | ------------------------------ | --------------------- |
| **火山引擎** | | | | |
| 火山引擎语音识别 | 是 | 相对稳定,偶尔响应较慢,少数情况断连 | 识别效果一般,同音字词处理不好 | 较低,20000次免费额度 |
| 火山引擎语音合成 | 是 | 相对稳定,偶尔响应较慢,少数情况断连 | 合成效果较好 | 较低,20000次免费额度 |
| **讯飞AI** | | | | |
| 讯飞语音识别 | 测试中 | | | |
| 讯飞语音合成 | 测试中 | | | |
## 5.版本更新
### v0.3.01
* 更新了asr单次请求数据大小