AI 业务逻辑初始化

This commit is contained in:
wangxiangshun
2025-10-04 13:56:50 +08:00
parent 6ab8d3d252
commit 51c27865f0
20 changed files with 845 additions and 1420 deletions

View File

@@ -0,0 +1,56 @@
package com.vetti.web.controller.ai;
import com.vetti.common.ai.elevenLabs.ElevenLabsClient;
import com.vetti.common.ai.gpt.ChatGPTClient;
import com.vetti.common.core.controller.BaseController;
import com.vetti.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* AI 共通测试接口处理
*
* @author wangxiangshun
*/
@Api(tags ="AI 共通测试接口处理")
@RestController
@RequestMapping("/aiCommon")
public class AiCommonController extends BaseController
{
@Autowired
private ElevenLabsClient elevenLabsClient;
@Autowired
private ChatGPTClient chatGPTClient;
/**
* 进行文本转语音处理
*/
@ApiOperation("进行文本转语音处理")
@GetMapping("/handleTextToVice")
public AjaxResult handleTextToVice()
{
elevenLabsClient.handleTextToVoice("我只是测试的文本转换成语音","/Users/wangxiangshun/Desktop/临时文件/output.mp3");
return success();
}
/**
* AI 聊天
*/
@ApiOperation("AI 聊天")
@GetMapping("/handleAiChat")
public AjaxResult handleAiChat()
{
String resultMsg = chatGPTClient.handleAiChat("你好,我叫wangxiangshun");
return AjaxResult.success(resultMsg);
}
}

View File

@@ -0,0 +1,167 @@
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 8080
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数默认为100
accept-count: 1000
threads:
# tomcat最大线程数默认为200
max: 800
# Tomcat启动初始化的线程数默认值10
min-spare: 100
# 日志配置
logging:
level:
com.vetti: debug
org.springframework: warn
pathUrl: ./logs/
# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间默认10分钟
lockTime: 10
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://13.211.168.80:3306/vetti_service?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: vetti_service
password: Hotake@2025
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: localhost
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: Hamkke@2021
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
fs:
minio:
endpoint: http://test.hotake.cn:19000 # MinIO 服务地址
access-key: minioadmin # 访问密钥(替换为你的 Access Key
secret-key: minioadmin # 密钥(替换为你的 Secret Key
max-file-size: 104857600 #字节Byte
bucket-name.: # 存储桶名称(提前在 MinIO 控制台创建)
system-fs: system-fs
# Twilio SendGrid 配置
twilio:
sendgrid:
#你的SendGrid API Key
api-key: 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
#已验证的发送邮箱地址
from-email: noreply@routez.app
#你的应用名称
from-name: RouteZ
template-ids:
routez-verification-code: d-321fee8a85704983849eb1f69313ae24
verification:
code:
email:
# 验证码长度
length: 5
# 验证码过期时间(分钟)
expiration-minutes: 10
# 文本转语音
elevenLabs:
baseUrl: https://api.elevenlabs.io/v1
apiKey: sk_5240d8f56cb1eb5225fffcf903f62479884d1af5b3de6812
modelId: eleven_monolingual_v1
# 语音转文本
whisper:
apiUrl: https://api.openai.com/v1/audio/transcriptions
model: whisper-1
apiKey: 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
language: zh
# AI 聊天
chatGpt:
apiKey:
apiUrl: https://api.openai.com/v1/chat/completions
model: gpt-3.5-turbo
role: user
http:
client:
connect-timeout-seconds: 10

View File

@@ -123,6 +123,7 @@ fs:
max-file-size: 104857600 #字节Byte
bucket-name.: # 存储桶名称(提前在 MinIO 控制台创建)
system-fs: system-fs
# Twilio SendGrid 配置
twilio:
sendgrid:
@@ -141,12 +142,25 @@ verification:
length: 5
# 验证码过期时间(分钟)
expiration-minutes: 10
# 文本转语音
elevenLabs:
baseUrl: https://api.elevenlabs.io/v1
apiKey: sk_5240d8f56cb1eb5225fffcf903f62479884d1af5b3de6812
modelId: eleven_monolingual_v1
# 语音转文本
whisper:
apiUrl: https://api.openai.com/v1/audio/transcriptions
model: whisper-1
apiKey: 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
language: zh
# AI 聊天
chatGpt:
apiKey:
apiUrl: https://api.openai.com/v1/chat/completions
model: gpt-3.5-turbo
role: user
here-map:
api-key: q1gsOSZ899P8dVaoW2HZXq40W-AqCwB6iON5tw7-sqI
geocoding-api-url: https://geocode.search.hereapi.com/v1/geocode
reverse-geocoding-api-url: https://revgeocode.search.hereapi.com/v1/revgeocode
router-api-url: https://router.hereapi.com/v8/routes
http:
client:

View File

@@ -78,17 +78,3 @@ xss:
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
# 安全配置
security:
# 不校验白名单
ignore:
whites:
- /v1/app/system/i18nGain/getInfo
- /v1/app/verificationEmail/send
- /v1/app/verificationEmail/verify
- /v1/app/auth/appLogin
- /v1/app/auth/appRegister
- /v1/app/auth/appResetPassword
- /v1/app/auth/getUserInfoByEmail
- /v1/app/verificationEmail/register/send