chenpei d0dc94e36d feat: 将弹幕功能替换为AI聊天助手
新功能:
- 创建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助手体验!
2025-10-27 17:45:37 +08:00

75 lines
3.0 KiB
Python
Executable File

# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: log.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tlog.proto\x12\x02pb\"(\n\nLogContent\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x03Log\x12\x0c\n\x04time\x18\x01 \x01(\x03\x12 \n\x08\x63ontents\x18\x02 \x03(\x0b\x32\x0e.pb.LogContent\"$\n\x06LogTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"w\n\x08LogGroup\x12\x15\n\x04logs\x18\x01 \x03(\x0b\x32\x07.pb.Log\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x1c\n\x08log_tags\x18\x03 \x03(\x0b\x32\n.pb.LogTag\x12\x10\n\x08\x66ilename\x18\x04 \x01(\t\x12\x14\n\x0c\x63ontext_flow\x18\x05 \x01(\t\"0\n\x0cLogGroupList\x12 \n\nlog_groups\x18\x01 \x03(\x0b\x32\x0c.pb.LogGroupb\x06proto3')
_LOGCONTENT = DESCRIPTOR.message_types_by_name['LogContent']
_LOG = DESCRIPTOR.message_types_by_name['Log']
_LOGTAG = DESCRIPTOR.message_types_by_name['LogTag']
_LOGGROUP = DESCRIPTOR.message_types_by_name['LogGroup']
_LOGGROUPLIST = DESCRIPTOR.message_types_by_name['LogGroupList']
LogContent = _reflection.GeneratedProtocolMessageType('LogContent', (_message.Message,), {
'DESCRIPTOR' : _LOGCONTENT,
'__module__' : 'log_pb2'
# @@protoc_insertion_point(class_scope:pb.LogContent)
})
_sym_db.RegisterMessage(LogContent)
Log = _reflection.GeneratedProtocolMessageType('Log', (_message.Message,), {
'DESCRIPTOR' : _LOG,
'__module__' : 'log_pb2'
# @@protoc_insertion_point(class_scope:pb.Log)
})
_sym_db.RegisterMessage(Log)
LogTag = _reflection.GeneratedProtocolMessageType('LogTag', (_message.Message,), {
'DESCRIPTOR' : _LOGTAG,
'__module__' : 'log_pb2'
# @@protoc_insertion_point(class_scope:pb.LogTag)
})
_sym_db.RegisterMessage(LogTag)
LogGroup = _reflection.GeneratedProtocolMessageType('LogGroup', (_message.Message,), {
'DESCRIPTOR' : _LOGGROUP,
'__module__' : 'log_pb2'
# @@protoc_insertion_point(class_scope:pb.LogGroup)
})
_sym_db.RegisterMessage(LogGroup)
LogGroupList = _reflection.GeneratedProtocolMessageType('LogGroupList', (_message.Message,), {
'DESCRIPTOR' : _LOGGROUPLIST,
'__module__' : 'log_pb2'
# @@protoc_insertion_point(class_scope:pb.LogGroupList)
})
_sym_db.RegisterMessage(LogGroupList)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_LOGCONTENT._serialized_start=17
_LOGCONTENT._serialized_end=57
_LOG._serialized_start=59
_LOG._serialized_end=112
_LOGTAG._serialized_start=114
_LOGTAG._serialized_end=150
_LOGGROUP._serialized_start=152
_LOGGROUP._serialized_end=271
_LOGGROUPLIST._serialized_start=273
_LOGGROUPLIST._serialized_end=321
# @@protoc_insertion_point(module_scope)