# customeraiagent
**Repository Path**: giteeliuyan/customeraiagent
## Basic Information
- **Project Name**: customeraiagent
- **Description**: java领域的Vanna.AI
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2025-03-18
- **Last Updated**: 2025-05-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CustomerAiAgent 自定义AiAgent
  
# 介绍
1、java领域的Vanna.AI
2、可快速进行业务集成、AI对接
3、设计简单,快速上手
4、采用稀疏、稠密向量结合搜索
5、多路召回、重排序策略
# 如何使用
```java
@Test
public void 知识库训练() throws IOException {
{
// Long stringKnowLedgeId = 1L;
// String inputData = "123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界123456789123123你好啊世界";
// EmbeddingModelInputData stringInputDataModel = new EmbeddingModelInputData(inputData);
// KnowledgeSupperTool.train(stringKnowLedgeId, stringInputDataModel);
}
{
// Long pdfKnowLedgeId = 2L;
// String pdfurl = "https://wms-1311623590.cos.ap-guangzhou.myqcloud.com/test/1901555314088554498-7-云缴费收银台接入规范-v2.3.3.pdf";
// EmbeddingModelInputData pdfInputDataModel = new EmbeddingModelInputData("pdf", pdfurl);
// KnowledgeSupperTool.train(pdfKnowLedgeId, pdfInputDataModel);
}
{
Long docKnowLedgeId = 3L;
String docurl = "https://wms-1311623590.cos.ap-guangzhou.myqcloud.com/test/1901555465104470017-供应链saas总结.doc";
EmbeddingModelInputData docInputDataModel = new EmbeddingModelInputData("doc", docurl);
KnowledgeSupperTool.train(docKnowLedgeId, docInputDataModel);
}
{
// Long docxKnowLedgeId = 4L;
// String docxurl = "https://wms-1311623590.cos.ap-guangzhou.myqcloud.com/test/1901810948130287618-个人收入证明.docx";
// EmbeddingModelInputData docxInputDataModel = new EmbeddingModelInputData("docx", docxurl);
// KnowledgeSupperTool.train(docxKnowLedgeId, docxInputDataModel);
}
{
// Long txtKnowLedgeId = 5L;
// String txturl = "https://wms-1311623590.cos.ap-guangzhou.myqcloud.com/test/1901555761536905218-新建文本文档 (2).txt";
// EmbeddingModelInputData txtInputDataModel = new EmbeddingModelInputData("txt", txturl);
// KnowledgeSupperTool.train(txtKnowLedgeId, txtInputDataModel);
}
{
// Long remarkKnowLedgeId = 6L;
// String inputData = "这是一段不会被分片的知识库内容,即使再长也不分片,因为EmbeddingModelInputData的type=remark";
// EmbeddingModelInputData remarkInputDataModel = new EmbeddingModelInputData("remark", inputData);
// KnowledgeSupperTool.train(remarkKnowLedgeId, remarkInputDataModel);
}
}
@Test
public void 模拟客户端_AI使用知识库_进行对话() throws IOException {
Flux flux = chatBigModel.chatAsync(inputData);
}
@Test
public void 数据库训练() throws IOException {
Long knowLedgeId = 3L;
{
//单表训练 便于测试
MysqlInfo mysqlInfo = new MysqlInfo();
mysqlInfo.setUrl("jdbc:mysql://127.0.0.1:3306/customeraiagent");
mysqlInfo.setUsername("");
mysqlInfo.setPassword("");
mysqlInfo.setTargetSchema("zt");
mysqlInfo.setTargetTable("warehouse_region");
EmbeddingModelMysqlInputData mysqlInputData = new EmbeddingModelMysqlInputData(mysqlInfo);
Text2SqlSupperTool.trainMysql(knowLedgeId, mysqlInputData);
}
{
MysqlInfo mysqlInfo = new MysqlInfo();
mysqlInfo.setUrl("jdbc:mysql://127.0.0.1:3306/customeraiagent");
mysqlInfo.setUsername("");
mysqlInfo.setPassword("");
mysqlInfo.setTargetSchema("zt");
mysqlInfo.setTargetTable("location");
EmbeddingModelMysqlInputData mysqlInputData = new EmbeddingModelMysqlInputData(mysqlInfo);
Text2SqlSupperTool.trainMysql(knowLedgeId, mysqlInputData);
}
{
// //训练整个库 资源消耗过多 不便于测试
// MysqlInfo mysqlInfo = new MysqlInfo();
// mysqlInfo.setUrl("jdbc:mysql://127.0.0.1:3306/customeraiagent");
// mysqlInfo.setUsername("");
// mysqlInfo.setPassword("");
// mysqlInfo.setTargetSchema(null);
// mysqlInfo.setTargetTable(null);
// EmbeddingModelMysqlInputData mysqlInputData = new EmbeddingModelMysqlInputData(mysqlInfo);
// Text2SqlSupperTool.trainMysql(knowLedgeId, mysqlInputData);
}
{
//数据库备注训练
Text2SqlSupperTool.trainRemark(knowLedgeId, 1L, "包仓是包仓合同包库区或包库位的意思");
Text2SqlSupperTool.trainRemark(knowLedgeId, 2L, "零仓合同有多种类型,每种类型计费方式是不一样的");
}
}
@Test
public void 模拟客户端_AI使用数据库向量知识库_进行对话() throws IOException {
Flux flux = text2SqlBigModel.chatAsync(inputData);
}
```
# 架构设计

# 待完善
1、更多功能支持中...
# 支持作者
