fix(backend): 累积的错误修复和细节修正
This commit is contained in:
@@ -22,3 +22,5 @@ alembic/versions/
|
||||
|
||||
.idea
|
||||
.codemoss
|
||||
|
||||
alembic.ini
|
||||
|
||||
@@ -96,5 +96,5 @@ def add_model(
|
||||
session.add(am)
|
||||
session.commit()
|
||||
session.refresh(am)
|
||||
|
||||
|
||||
console.print(f"[cyan]已添加模型 [{am.id}][{am.model_name}]({am.aii_provider_id})[/cyan]")
|
||||
|
||||
@@ -18,7 +18,10 @@ from .session import async_get_session, get_session
|
||||
|
||||
# 创建数据库连接和数据库文件
|
||||
def create_db() -> None: # noqa: RUF067
|
||||
SQLModel.metadata.create_all(engine)
|
||||
try:
|
||||
SQLModel.metadata.create_all(engine)
|
||||
except Exception as e:
|
||||
raise RuntimeError(f"连接或创建数据库失败:{e}") from e
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
from sqlmodel import Field, Relationship, SQLModel
|
||||
|
||||
@@ -7,7 +9,7 @@ class AiiProvider(SQLModel, table=True):
|
||||
模型提供商。
|
||||
"""
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
name: str
|
||||
base_url: str
|
||||
api_key: str
|
||||
@@ -16,7 +18,7 @@ class AiiProvider(SQLModel, table=True):
|
||||
|
||||
|
||||
class AiiProviderPublic(BaseModel):
|
||||
id: int | None = None
|
||||
id: Optional[int] = None
|
||||
name: str
|
||||
base_url: str
|
||||
api_key: str
|
||||
@@ -27,16 +29,18 @@ class AiiModel(SQLModel, table=True):
|
||||
模型。
|
||||
"""
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
model_name: str
|
||||
max_context_length: int
|
||||
|
||||
aii_provider_id: int = Field(default=None, foreign_key="aiiprovider.id")
|
||||
aii_provider: AiiProvider = Relationship(back_populates="aii_models")
|
||||
|
||||
chatrooms: list["Chatroom"] = Relationship(back_populates="default_model")
|
||||
|
||||
|
||||
class AiiModelPublic(BaseModel):
|
||||
id: int | None = None
|
||||
id: Optional[int] = None
|
||||
model_name: str
|
||||
max_context_length: int
|
||||
|
||||
@@ -58,3 +62,6 @@ def z_aii_provider(ap: AiiProvider) -> dict:
|
||||
"name": ap.name,
|
||||
"base_url": ap.base_url,
|
||||
}
|
||||
|
||||
|
||||
from .model_story import Chatroom # noqa: E402
|
||||
|
||||
@@ -16,33 +16,40 @@ class Chatroom(SQLModel, table=True):
|
||||
规定 creator_id 为 0 的聊天室为公共聊天室,其权限由配置文件决定。
|
||||
"""
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
name: str
|
||||
description: str
|
||||
feature_image: str = Field(
|
||||
default=f"{config_manager.get('site_url', 'http://localhost:9000')}/nyahome/normal-thumbnail.png"
|
||||
)
|
||||
content: str
|
||||
script: str
|
||||
content: str = Field(description="聊天室中的聊天内容。作为已序列化的 json 格式字符串存储,请参阅数据保存。")
|
||||
script: str = Field(description="聊天室中的世界书内容。作为已序列化的 json 格式字符串存储,请参阅数据保存。")
|
||||
|
||||
script_template_id: int | None = Field(
|
||||
script_template_id: Optional[int] = Field(
|
||||
default=None, sa_column=Column(ForeignKey("scripttemplate.id", name="fk_chatroom_script_template"))
|
||||
)
|
||||
script_template_version: str | None
|
||||
script_template_version: Optional[str]
|
||||
script_template: "ScriptTemplate" = Relationship()
|
||||
|
||||
creator_id: int = Field(sa_column=Column(ForeignKey("modeluser.id", name="fk_chatroom_creator")))
|
||||
creator: Optional["ModelUser"] = Relationship(back_populates="chatrooms")
|
||||
creator: "ModelUser" = Relationship(back_populates="chatrooms")
|
||||
|
||||
default_model_id: Optional[int] = Field(
|
||||
sa_column=Column(ForeignKey("aiimodel.id", name="fk_chatroom_default_model"))
|
||||
)
|
||||
default_model: Optional["AiiModel"] = Relationship(back_populates="chatrooms")
|
||||
|
||||
|
||||
class ChatroomPublic(BaseModel):
|
||||
id: int | None = None
|
||||
id: Optional[int] = None
|
||||
name: str
|
||||
description: str
|
||||
feature_image: str
|
||||
|
||||
script_template_id: int | None = None
|
||||
script_template_version: str | None
|
||||
script_template_id: Optional[int] = None
|
||||
script_template_version: Optional[str] = None
|
||||
|
||||
default_model_id: Optional[int] = None
|
||||
|
||||
|
||||
class ScriptTemplate(SQLModel, table=True):
|
||||
@@ -104,4 +111,5 @@ class ChatroomChatDelete(BaseModel):
|
||||
change: Literal["user", "aii"]
|
||||
|
||||
|
||||
from .model_aii import AiiModel # noqa: E402
|
||||
from .model_user import ModelUser # noqa: E402
|
||||
|
||||
@@ -126,11 +126,11 @@ async def s_start_async_streaming_chat(
|
||||
td = getattr(chuck.choices[0].delta, "reasoning_content", None)
|
||||
cd = chuck.choices[0].delta.content
|
||||
if td:
|
||||
logger.debug(f"reasoning 流式输出:{cd}")
|
||||
# logger.debug(f"reasoning 流式输出:{cd}")
|
||||
aii_thinking += td
|
||||
yield f"data: {json.dumps({'text': td, 'type': 'thinking'}, ensure_ascii=False)}\n\n"
|
||||
if cd:
|
||||
logger.debug(f"content 流式输出:{cd}")
|
||||
# logger.debug(f"content 流式输出:{cd}")
|
||||
aii_message += cd
|
||||
yield f"data: {json.dumps({'text': cd, 'type': 'output'}, ensure_ascii=False)}\n\n"
|
||||
logger.info(f"AI 完成输出 : {aii_message}")
|
||||
|
||||
Reference in New Issue
Block a user