ai-query对接新版freesun-agent接口的分支
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

423 lines
16 KiB

module.exports = {
env: process.env.NODE_ENV || "development", // 运行环境 development | production
port: process.env.PORT || 4000, // 服务端口
db: {
url: process.env.DB, // 数据库连接地址
opts: {}, // sequelize options
},
xunruan: {
host: process.env.XUNRUAN_HOST // 迅软解密服务地址
},
qiniu: {
// 七牛云配置
dmn: process.env.FS_QINIU_DOMAIN,
bkt: process.env.FS_QINIU_BUCKET,
ak: process.env.FS_QINIU_ACCESSKEY,
sk: process.env.FS_QINIU_SECRETKEY,
},
imageAssets: {
databaseUrl: process.env.IMAGE_ASSETS_DATABASE_URL,
dashscopeApiKey: process.env.DASHSCOPE_API_KEY,
dashscopeBaseUrl:
process.env.DASHSCOPE_BASE_URL ||
"https://dashscope.aliyuncs.com/compatible-mode/v1",
embeddingModel:
process.env.IMAGE_ASSET_EMBEDDING_MODEL || "qwen3.7-text-embedding",
embeddingDimensions: Number(process.env.IMAGE_ASSET_EMBEDDING_DIMENSIONS || 1024),
requestTimeout: Number(process.env.IMAGE_ASSET_REQUEST_TIMEOUT || 30000),
},
pssaRequest: [
{
// 数据请求方法封装 由核心包提供使用
name: "xiaReq", // 请求方法名 .eg app.fs.xiaReq
root: "http://www.xiapazi.site/api", // 请求根地址
option: {
// superagent 的默认参数
query: {
template: "@peace/node_server",
env: process.env.NODE_ENV || "development",
},
body: {},
params: {},
header: { "Content-Type": "application/json" },
timeout: 5000,
timekeep: true, // 是否记录请求时间差
interceptor: (res, err) => {
// 拦截器
if (err) return err;
return res.body ?? {};
},
},
},
{
name: "emisReq",
root: process.env.EMIS_API || "http://localhost:4000",
option: {
query: {
template: "@peace/node_server",
env: process.env.NODE_ENV || "development",
},
body: {},
params: {},
header: { "Content-Type": "application/json" },
timeout: 10000,
timekeep: true,
interceptor: (res, err) => {
if (err) return err;
return res.body ?? {};
},
},
},
{
name: "centerRequest",
root: process.env.AI_CENTER_URL || "http://localhost:4001",
option: {
query: {},
body: {},
params: {},
header: { "Content-Type": "application/json" },
timeout: 10000,
timekeep: true,
interceptor: (res, err) => {
if (err) return err;
return res.body ?? {};
},
},
},
],
sms: {
// 短信配置
ali: {
// 阿里云短信配置 使用前需要安装 @alicloud/pop-core 包
accessKey: process.env.SMS_ALI_ACCESSKEYID || "123456",
accessSecret: process.env.SMS_ALI_ACCESSKEYSECRET || "123456",
},
},
tenderUser: {
emis: {
code: process.env.TENDER_USER_EMIS_CODE || "ai-center",
},
aiCenter: {
passwordLoginPath: "/login",
loginByCodePath: "/login-by-phone",
registerByCodePath: "/register-by-phone",
sendCodePath: "/send-code",
profilePath: "/profile",
logoutPath: "/logout",
verifyTokenPath: "/verify-token",
},
sms: {
signName: process.env.TENDER_USER_SMS_SIGN_NAME || "知投",
templateCode:
process.env.TENDER_USER_SMS_TEMPLATE_CODE || "SMS_123456789", // 例如:SMS_123456789
templateParamKey:
process.env.TENDER_USER_SMS_TEMPLATE_PARAM_KEY || "code", // 模板变量名
},
},
aideduct: {
// 飞尚扣费接口基础地址(拼接具体接口 path)
baseUrl:
process.env.AIDEDUCT_BASE_URL ||
"http://www.free-sun.com.cn/fspace/index.php/api/Aideduct",
aesKey: process.env.AIDEDUCT_AES_KEY || "Feishang2025AesK",
aesIv: process.env.AIDEDUCT_AES_IV || "Feishang2025AesI",
timeout: Number(process.env.AIDEDUCT_TIMEOUT || 10000),
},
billing: {
tokenPerYuan: Number(process.env.TOKEN_PER_YUAN || 10000),
},
// email: { // 邮件配置 使用前需要安装 nodemailer 包
// host: 'smtp.exmail.qq.com',
// port: 465,
// name: '',
// address: '@free-sun.com.cn',
// password: ''
// },
// fsAttachment: { // 自研包 @fs/attachment 配置
// qiniu: { // 不指定则使用默认的本地存储
// domain: process.env.FS_QINIU_DOMAIN,
// bucket: process.env.FS_QINIU_BUCKET,
// accessKey: process.env.FS_QINIU_ACCESSKEY,
// secretKey: process.env.FS_QINIU_SECRETKEY
// },
// maxSize: 104857600, // 100M
// types: ['*'],
// },
clickHouse: {
// clickHouse 数据库配置 使用前需要安装 @clickhouse/client 包
url: process.env.CLICKHOUST_URL,
user: process.env.CLICKHOUST_USER,
password: process.env.CLICKHOUST_PASSWORD,
db: [
{
name: "anxinyun", // 通过 app.fs.clickhouse.anxinyun 进行访问
db: process.env.CLICKHOUST_ANXINCLOUD, // 数据库名
},
{
name: "alarm",
db: process.env.CLICKHOUST_ALARM,
},
{
name: "poms",
db: process.env.CLICKHOUST_POMS,
},
{
name: "test_sensor_data",
db: process.env.CLICKHOUST_TEST_SENSOR_DATA,
},
{
name: "fs_data_analysis",
db: process.env.CLICKHOUST_FS_DATA_ANALYSIS,
},
],
},
// es: [{ // elasticsearch 配置 使用前需要安装 elasticsearch 包
// name: 'strucOnline',
// root: process.env.ANXINCLOUD_ES_NODES_REST.split(','),
// index: `anxincloud_online`,
// type: '_doc'
// }],
redis: process.env.REDIS, // redis 配置 使用前需要安装 ioredis 包
// kafka: { // kafka 配置 使用前需要安装 kafka-node 包 //todo : 待完善
// root: process.env.ANXINCLOUD_KAFKA_BROKERS
// },
bodyParser: {
// Koa body parser options
formLimit: "80mb",
jsonLimit: "80mb",
textLimit: "80mb",
},
moment: {
// moment 配置
locale: "zh-cn",
timezone: "Asia/Shanghai",
},
fastGpt: {
// fastGpt配置
apiUrl: process.env.FASTGPT_URL,
username: process.env.FASTGPT_USERNAME,
password: process.env.FASTGPT_PASSWORD,
imageDatasetId: process.env.FASTGPT_IMAGE_DATASET_ID,
appKey: process.env.FASTGPT_XIAOSHANG_APP_KEY,
tenderAppId: process.env.FASTGPT_TENDER_APP_ID,
tenderAppKey: process.env.FASTGPT_TENDER_APP_KEY,
externalXiaoshangAppKey: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_KEY,
ImageUnderstandingAppKey: process.env.FASTGPT_IMAGEUNDERSTANDING_APP_KEY,
schemeAppKey: process.env.FASTGPT_SCHEME_APP_KEY,
industrySolutionAppKey: process.env.FASTGPT_INDUSTRYSOLUTION_APP_KEY,
v2TenderAppKey: process.env.FASTGPT_TENDER_V2_APP_KEY,
v2TenderImageAppKey: process.env.FASTGPT_TENDER_V2_IMAGE_APP_KEY,
regionAppKey: process.env.FASTGPT_REGION_APP_KEY,
solutionAppKey: process.env.FASTGPT_SOLUTION_APP_KEY,
knowledgeAppKey: process.env.FASTGPT_KNOWLEDGE_APP_KEY,
bookWriterAppKey: process.env.FASTGPT_BOOK_WRITER_APP_KEY,
polishAppKey: process.env.FASTGPT_POLISH_APP_KEY,
planListAppKey: process.env.FASTGPT_PLANLIST_APP_KEY,
reportAppKey: process.env.FASTGPT_REPORT_APP_KEY,
patentAppKey: process.env.FASTGPT_PATENT_APP_KEY,
voiceAppKey: process.env.FASTGPT_VOICE_APP_KEY,
ocrAppKey: process.env.FASTGPT_OCR_APP_KEY,
deDuplicationAppKey: process.env.FASTGPT_DE_DUPLICATION_APP_KEY,
},
ocrApiUrl: process.env.OCR_API_URL,
schemeListGenerator: {
apiUrl: process.env.SCHEME_LIST_API || "http://localhost:8001",
},
ali: {
appKey: process.env.ALI_APP_KEY,
},
pep: {
emisApi: process.env.EMIS_API,
username: process.env.PEP_USERNAME,
password: process.env.PEP_PASSWORD,
knowledgeUrl: process.env.FS_KNOWLEDGE_URL,
},
aiCenterUrl: {
knowledgeUrl: process.env.AI_CENTER_URL + "/knowledge",
},
apihz: {
apiUrl: process.env.APIHZ_URL,
id: process.env.APIHZ_ID,
key: process.env.APIHZ_KEY,
},
cnipa: {
loginName: process.env.CNIPA_LOGIN_NAME,
password: process.env.CNIPA_PASSWORD,
encryptedPassword: process.env.CNIPA_ENCRYPTED_PASSWORD,
browserHeadless: process.env.CNIPA_BROWSER_HEADLESS === "true",
browserUserDataDir: process.env.CNIPA_BROWSER_USER_DATA_DIR,
},
dataease: {
apiUrl: process.env.DATAEASE_API_URL,
username: process.env.DATAEASE_USERNAME,
password: process.env.DATAEASE_PASSWORD,
},
fsAiClient: {
"pep-feixiaoshang": {
key: "pep-feixiaoshang",
name: "飞小尚AI助手",
appId: process.env.FASTGPT_XIAOSHANG_APP_ID,
appKey: process.env.FASTGPT_XIAOSHANG_APP_KEY,
newAppId: process.env.FASTGPT_XIAOSHANG_NEW_APP_ID,
newAppKey: process.env.FASTGPT_XIAOSHANG_NEW_APP_KEY,
apps: {
industrySolution: {
appId: process.env.FASTGPT_INDUSTRYSOLUTION_APP_ID,
appKey: process.env.FASTGPT_INDUSTRYSOLUTION_APP_KEY,
},
dataAnalysis: {
appId: process.env.FASTGPT_DATAANALYSIS_APP_ID,
appKey: process.env.FASTGPT_DATAANALYSIS_APP_KEY,
},
dangersIdentification: {
appId: process.env.FASTGPT_DANGERSIDENTIFICATION_APP_ID,
appKey: process.env.FASTGPT_DANGERSIDENTIFICATION_APP_KEY,
},
workingHoursEstimate: {
appId: process.env.FASTGPT_WORKINGHOURSESTIMATE_APP_ID,
appKey: process.env.FASTGPT_WORKINGHOURSESTIMATE_APP_KEY,
},
parameterComparison: {
appId: process.env.FASTGPT_PARAMETER_COMPARISON_APP_ID,
appKey: process.env.FASTGPT_PARAMETER_COMPARISON_APP_KEY,
},
},
features: ["aiAgent"],
examples: [
{
title: "制度问答",
content: "请事假需要走什么流程?",
},
{
title: "行业规范",
content: "公路交通安全设施设计规范是什么?",
},
{
title: "销售话术",
content: "客户拜访基本话术有哪些?",
},
{
title: "产品介绍",
content: "公司有哪些振弦采集硬件产品?",
},
],
},
"external-feixiaoshang": {
key: "external-feixiaoshang",
name: "飞小尚AI助手",
identity:
"你是飞尚科技的AI小助手,名叫飞小尚,隶属于江西飞尚科技有限公司.除提示内容外,也要根据互联网内容进行详细解答;请严格使用提示、知识库引用段落,不得随意组合,提供严谨的内容回复;",
homeTips:
"行业专业模型,提供数据分析、规范解读、方案定制等服务,助力精准监测.",
appId: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_ID,
appKey: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_KEY,
features: ["verticalModel"],
examples: [
{
title: "行业规范",
content: "《公路桥涵养护规范》主要内容有哪些?",
},
{
title: "行业规范",
content: "基坑工程现场监测的对象包括哪些?",
},
{
title: "技术问答",
content: "气体传感器的稳定性如何评估?",
},
{
title: "技术问答",
content: "传感器布置方法评价准则有哪些?",
},
],
},
"nanchangguidao-zay": {
key: "nanchangguidao-zay",
name: "质安云AI问答",
identity:
"你是质安云的AI助手,由江西飞尚科技有限公司(简称飞尚科技)提供技术支持.回答不必限定知识领域​,除提示内容外,也要根据互联网内容进行详细解答.",
homeTips: "",
appId: process.env.FASTGPT_NCGDZAY_APP_ID,
appKey: process.env.FASTGPT_NCGDZAY_APP_KEY,
features: [],
examples: [],
},
"nuclear-feixiaoshang": {
key: "nuclear-feixiaoshang",
name: "飞小尚AI助手",
identity:
"你是飞尚科技的AI小助手,名叫飞小尚,隶属于江西飞尚科技有限公司.除提示内容外,也要根据互联网内容进行详细解答;请严格使用提示、知识库引用段落,不得随意组合,提供严谨的内容回复;",
homeTips:
"行业专业模型,提供数据分析、规范解读、方案定制等服务,助力精准监测",
appId: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_ID,
appKey: process.env.FASTGPT_XIAOSHANG_EXTERNAL_APP_KEY,
apps: {
industrySolution: {
appId: process.env.FASTGPT_INDUSTRYSOLUTION_APP_ID,
appKey: process.env.FASTGPT_INDUSTRYSOLUTION_APP_KEY,
},
},
features: ["aiAgent"],
examples: [
{
title: "行业规范",
content: "《核电厂岩土工程勘察规范》主要内容有哪些?",
},
{
title: "行业规范",
content: "核电厂变形监测的等级划分及精度要求是什么?",
},
{
title: "技术问答",
content: "核电冷却塔的结构有哪些典型特征?",
},
{
title: "技术问答",
content: "什么是筏基变形测量?",
},
],
},
"tianchi-ai": {
key: "tianchi-ai",
name: "天驰AI问答",
identity:
"你是天驰公司的AI助手,由江西飞尚科技有限公司(简称飞尚科技)提供技术支持.回答不必限定知识领域​,除提示内容外,也要根据互联网内容进行详细解答.",
homeTips: "",
appId: process.env.FASTGPT_TIANCHI_APP_ID,
appKey: process.env.FASTGPT_TIANCHI_APP_KEY,
features: [],
examples: [],
},
},
// 诺瓦开放平台配置
novaCloud: {
baseUrl: process.env.NOVA_CLOUD_BASE_URL || "https://open-cn.vnnox.com",
appKey:
process.env.NOVA_CLOUD_APP_KEY || "f58213e02acc400a91a3bb8a5f21d8cd",
appSecret:
process.env.NOVA_CLOUD_APP_SECRET ||
"b8de018bf7074b328c6abbc88ca74293",
},
xfyunSpeech: {
appId: process.env.XFYUN_SPEECH_APP_ID || "10fa4447",
apiKey: process.env.XFYUN_SPEECH_API_KEY || "941b124de8a53429cd832131e1a82322",
apiSecret: process.env.XFYUN_SPEECH_API_SECRET || "MTVlZGY1ZGVmM2M4ZTA1NWExMGUyOWVk",
hostUrl: process.env.XFYUN_SPEECH_HOST_URL || "wss://iat-api.xfyun.cn/v2/iat",
},
superAgent: {
baseUrl: process.env.FS_SUPER_AGENT_API || "http://localhost:8080",
},
analytics: {
centerUrl: process.env.AI_CENTER_URL || "http://localhost:4001",
keyId: process.env.ANALYTICS_HMAC_KEY_ID || "",
secret: process.env.ANALYTICS_HMAC_SECRET || "",
fastgptKeyIds: process.env.ANALYTICS_FASTGPT_KEY_IDS || "{}",
},
};
const fs = require("fs");
const localPath = __dirname + "/local.js";
if (fs.existsSync(localPath)) {
Object.assign(module.exports, require(localPath));
}