mirror of
https://gitee.com/270580156/weiyu.git
synced 2026-05-15 03:38:04 +00:00
147 lines
3.9 KiB
Python
147 lines
3.9 KiB
Python
|
|
'''
|
|||
|
|
Author: jackning 270580156@qq.com
|
|||
|
|
Date: 2024-08-29 18:21:14
|
|||
|
|
LastEditors: jackning 270580156@qq.com
|
|||
|
|
LastEditTime: 2024-08-31 10:18:58
|
|||
|
|
Description: bytedesk.com https://github.com/Bytedesk/bytedesk
|
|||
|
|
Please be aware of the BSL license restrictions before installing Bytedesk IM –
|
|||
|
|
selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
|
|||
|
|
仅支持企业内部员工自用,严禁私自用于销售、二次销售或者部署SaaS方式销售
|
|||
|
|
Business Source License 1.1: https://github.com/Bytedesk/bytedesk/blob/main/LICENSE
|
|||
|
|
contact: 270580156@qq.com
|
|||
|
|
技术/商务联系:270580156@qq.com
|
|||
|
|
Copyright (c) 2024 by bytedesk.com, All Rights Reserved.
|
|||
|
|
'''
|
|||
|
|
import json
|
|||
|
|
import logging
|
|||
|
|
from typing import List
|
|||
|
|
import redis
|
|||
|
|
from app.config import get_settings
|
|||
|
|
from app.consts import DELETE_FILE_ERROR, DELETE_FILE_SUCCESS, PARSE_FILE_ERROR, PARSE_FILE_SUCCESS, ANSWER, ANSWER_FINISHED, pubsubChannel
|
|||
|
|
#
|
|||
|
|
redisClient = redis.Redis(host=get_settings().REDIS_HOST,
|
|||
|
|
password=get_settings().REDIS_PASSWORD,
|
|||
|
|
port=get_settings().REDIS_PORT,
|
|||
|
|
decode_responses=True)
|
|||
|
|
#
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publishParseFileSuccess(fileUid: str, docIds: List[str]) -> None:
|
|||
|
|
content = json.dumps({
|
|||
|
|
"fileUid": fileUid,
|
|||
|
|
"docIds": docIds
|
|||
|
|
})
|
|||
|
|
message = json.dumps({
|
|||
|
|
"type": PARSE_FILE_SUCCESS,
|
|||
|
|
"content": content,
|
|||
|
|
}, ensure_ascii=False)
|
|||
|
|
defaultPublish(content=message)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publishParseFileError(fileUid: str, errorMsg: str) -> None:
|
|||
|
|
content = json.dumps({
|
|||
|
|
"fileUid": fileUid,
|
|||
|
|
"errorMsg": errorMsg,
|
|||
|
|
})
|
|||
|
|
message = json.dumps({
|
|||
|
|
"type": PARSE_FILE_ERROR,
|
|||
|
|
"content": content,
|
|||
|
|
}, ensure_ascii=False)
|
|||
|
|
defaultPublish(content=message)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publishDeleteFileSuccess(fileUid: str) -> None:
|
|||
|
|
content = json.dumps({
|
|||
|
|
"fileUid": fileUid,
|
|||
|
|
})
|
|||
|
|
message = json.dumps({
|
|||
|
|
"type": DELETE_FILE_SUCCESS,
|
|||
|
|
"content": content,
|
|||
|
|
}, ensure_ascii=False)
|
|||
|
|
defaultPublish(content=message)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publishDeleteFileError(fileUid: str, errorMsg: str) -> None:
|
|||
|
|
content = json.dumps({
|
|||
|
|
"fileUid": fileUid,
|
|||
|
|
"errorMsg": errorMsg,
|
|||
|
|
})
|
|||
|
|
message = json.dumps({
|
|||
|
|
"type": DELETE_FILE_ERROR,
|
|||
|
|
"content": content,
|
|||
|
|
}, ensure_ascii=False)
|
|||
|
|
defaultPublish(content=message)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publishAnswerMessage(
|
|||
|
|
id: int,
|
|||
|
|
uid: str,
|
|||
|
|
threadTopic: str,
|
|||
|
|
kbUid: str,
|
|||
|
|
question: str,
|
|||
|
|
answer: str,
|
|||
|
|
model: str,
|
|||
|
|
created: int) -> None:
|
|||
|
|
#
|
|||
|
|
content = json.dumps({
|
|||
|
|
"id": id,
|
|||
|
|
"uid": uid,
|
|||
|
|
"threadTopic": threadTopic,
|
|||
|
|
"kbUid": kbUid,
|
|||
|
|
"question": question,
|
|||
|
|
"answer": answer,
|
|||
|
|
"model": model,
|
|||
|
|
"created": created
|
|||
|
|
})
|
|||
|
|
message = json.dumps({
|
|||
|
|
"type": ANSWER,
|
|||
|
|
"content": content,
|
|||
|
|
}, ensure_ascii=False)
|
|||
|
|
defaultPublish(content=message)
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publishAnswerFinished(
|
|||
|
|
id: int,
|
|||
|
|
uid: str,
|
|||
|
|
threadTopic: str,
|
|||
|
|
kbUid: str,
|
|||
|
|
question: str,
|
|||
|
|
answer: str,
|
|||
|
|
model: str,
|
|||
|
|
created: int,
|
|||
|
|
promptTokens: str,
|
|||
|
|
completionTokens: str,
|
|||
|
|
totalTokens: str) -> None:
|
|||
|
|
#
|
|||
|
|
content = json.dumps({
|
|||
|
|
"id": id,
|
|||
|
|
"uid": uid,
|
|||
|
|
"threadTopic": threadTopic,
|
|||
|
|
"kbUid": kbUid,
|
|||
|
|
"question": question,
|
|||
|
|
"answer": answer,
|
|||
|
|
"model": model,
|
|||
|
|
"created": created,
|
|||
|
|
"promptTokens": promptTokens,
|
|||
|
|
"completionTokens": completionTokens,
|
|||
|
|
"totalTokens": totalTokens
|
|||
|
|
})
|
|||
|
|
message = json.dumps({
|
|||
|
|
"type": ANSWER_FINISHED,
|
|||
|
|
"content": content,
|
|||
|
|
}, ensure_ascii=False)
|
|||
|
|
defaultPublish(content=message)
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
#
|
|||
|
|
|
|||
|
|
|
|||
|
|
def defaultPublish(content: str) -> None:
|
|||
|
|
publish(pubsubChannel, content)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def publish(channel, message):
|
|||
|
|
# logging.info(f'publish {message} to channel: {channel}')
|
|||
|
|
redisClient.publish(channel, message)
|