新功能: - 创建AI聊天助手组件(AIChatWidget) - 支持文字+图片多模态对话 - 集成Gemini AI API - 支持图片编辑和内容生成 - 实时对话历史管理 - 优雅的UI设计,支持黑夜模式 技术实现: - 后端API代理Gemini API(/api/ai-chat) - 支持最多5张图片上传 - 流式响应处理 - 对话历史管理 - Base64图片处理 配置: - 在.env中添加Gemini API配置 - GEMINI_API_KEY - GEMINI_API_BASE_URL - GEMINI_MODEL 替换原弹幕功能,提供更强大的AI助手体验!
75 lines
2.0 KiB
Python
Executable File
75 lines
2.0 KiB
Python
Executable File
# coding:utf-8
|
|
import json
|
|
from enum import Enum
|
|
|
|
class FieldType(Enum):
|
|
Int64 = "int64"
|
|
List_Int64 = "list<int64>"
|
|
String = "string"
|
|
List_String = "list<string>"
|
|
Float32 = "float32"
|
|
Bool = "bool"
|
|
|
|
class EmbddingModelType(Enum):
|
|
EmbeddingModelBgeLargeZhAndM3 = "bge-large-zh-and-m3"
|
|
EmbeddingModelBgeLargeZh = "bge-large-zh"
|
|
EmbeddingModelBgeM3 = "bge-m3"
|
|
EmbeddingModelDoubao = "doubao-embedding"
|
|
EmbeddingModelDoubaoAndM3 = "doubao-embedding-and-m3"
|
|
EmbeddingModelDoubaoLarge = "doubao-embedding-large"
|
|
EmbeddingModelDoubaoLargeAndM3 = "doubao-embedding-large-and-m3"
|
|
|
|
class IndexType(Enum):
|
|
FLAT = "flat"
|
|
HNSW = "hnsw"
|
|
HNSW_HYBRID = "hnsw_hybrid"
|
|
|
|
class QuantType(Enum):
|
|
Float = "float"
|
|
Int8 = "int8"
|
|
Fix16 = "fix16"
|
|
|
|
class Field(object):
|
|
|
|
def __init__(self, kwargs):
|
|
self._field_name = kwargs.get("field_name")
|
|
self._field_type = kwargs.get("field_type")
|
|
self._field_val = kwargs.get("default_val") if kwargs.get("default_val") \
|
|
is not None else kwargs.get("field_value")
|
|
self._dim = kwargs.get("dim", 1)
|
|
self._is_primary_key = kwargs.get("is_primary_key", False)
|
|
self._pipeline_name = kwargs.get("pipeline_name")
|
|
|
|
@property
|
|
def field_name(self):
|
|
return self._field_name
|
|
|
|
@property
|
|
def field_type(self):
|
|
return self._field_type
|
|
|
|
@property
|
|
def field_val(self):
|
|
return self._field_val
|
|
|
|
@property
|
|
def dim(self):
|
|
return self._dim
|
|
|
|
@property
|
|
def is_primary_key(self):
|
|
return self._is_primary_key
|
|
|
|
@property
|
|
def pipeline_name(self):
|
|
return self._pipeline_name
|
|
|
|
|
|
class EnumEncoder(json.JSONEncoder):
|
|
def default(self, obj):
|
|
if isinstance(obj, Enum):
|
|
return obj.value
|
|
if isinstance(obj, dict):
|
|
return {k: self.default(v) for k, v in obj.items()}
|
|
return super().default(obj)
|