Skip to content

feat: Resources authorization #3183

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@

from application.chat_pipeline.I_base_chat_pipeline import IBaseChatPipelineStep, ParagraphPipelineModel
from application.chat_pipeline.pipeline_manage import PipelineManage
from application.serializers.application_serializers import NoReferencesSetting
from application.serializers.application import NoReferencesSetting
from common.field.common import InstanceField
from common.util.field_message import ErrMessage


class ModelField(serializers.Field):
Expand Down Expand Up @@ -53,35 +52,35 @@ class IChatStep(IBaseChatPipelineStep):
class InstanceSerializer(serializers.Serializer):
# 对话列表
message_list = serializers.ListField(required=True, child=MessageField(required=True),
error_messages=ErrMessage.list(_("Conversation list")))
model_id = serializers.UUIDField(required=False, allow_null=True, error_messages=ErrMessage.uuid(_("Model id")))
label=_("Conversation list"))
model_id = serializers.UUIDField(required=False, allow_null=True, label=_("Model id"))
# 段落列表
paragraph_list = serializers.ListField(error_messages=ErrMessage.list(_("Paragraph List")))
paragraph_list = serializers.ListField(label=_("Paragraph List"))
# 对话id
chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid(_("Conversation ID")))
chat_id = serializers.UUIDField(required=True, label=_("Conversation ID"))
# 用户问题
problem_text = serializers.CharField(required=True, error_messages=ErrMessage.uuid(_("User Questions")))
problem_text = serializers.CharField(required=True, label=_("User Questions"))
# 后置处理器
post_response_handler = InstanceField(model_type=PostResponseHandler,
error_messages=ErrMessage.base(_("Post-processor")))
label=_("Post-processor"))
# 补全问题
padding_problem_text = serializers.CharField(required=False,
error_messages=ErrMessage.base(_("Completion Question")))
label=_("Completion Question"))
# 是否使用流的形式输出
stream = serializers.BooleanField(required=False, error_messages=ErrMessage.base(_("Streaming Output")))
client_id = serializers.CharField(required=True, error_messages=ErrMessage.char(_("Client id")))
client_type = serializers.CharField(required=True, error_messages=ErrMessage.char(_("Client Type")))
stream = serializers.BooleanField(required=False, label=_("Streaming Output"))
client_id = serializers.CharField(required=True, label=_("Client id"))
client_type = serializers.CharField(required=True, label=_("Client Type"))
# 未查询到引用分段
no_references_setting = NoReferencesSetting(required=True,
error_messages=ErrMessage.base(_("No reference segment settings")))
label=_("No reference segment settings"))

user_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid(_("User ID")))
user_id = serializers.UUIDField(required=True, label=_("User ID"))

model_setting = serializers.DictField(required=True, allow_null=True,
error_messages=ErrMessage.dict(_("Model settings")))
label=_("Model settings"))

model_params_setting = serializers.DictField(required=False, allow_null=True,
error_messages=ErrMessage.dict(_("Model parameter settings")))
label=_("Model parameter settings"))

def is_valid(self, *, raise_exception=False):
super().is_valid(raise_exception=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,35 @@
from application.chat_pipeline.I_base_chat_pipeline import IBaseChatPipelineStep, ParagraphPipelineModel
from application.chat_pipeline.pipeline_manage import PipelineManage
from application.models import ChatRecord
from application.serializers.application_serializers import NoReferencesSetting
from application.serializers.application import NoReferencesSetting
from common.field.common import InstanceField
from common.util.field_message import ErrMessage


class IGenerateHumanMessageStep(IBaseChatPipelineStep):
class InstanceSerializer(serializers.Serializer):
# 问题
problem_text = serializers.CharField(required=True, error_messages=ErrMessage.char(_("question")))
problem_text = serializers.CharField(required=True, label=_("question"))
# 段落列表
paragraph_list = serializers.ListField(child=InstanceField(model_type=ParagraphPipelineModel, required=True),
error_messages=ErrMessage.list(_("Paragraph List")))
label=_("Paragraph List"))
# 历史对答
history_chat_record = serializers.ListField(child=InstanceField(model_type=ChatRecord, required=True),
error_messages=ErrMessage.list(_("History Questions")))
label=_("History Questions"))
# 多轮对话数量
dialogue_number = serializers.IntegerField(required=True, error_messages=ErrMessage.integer(_("Number of multi-round conversations")))
dialogue_number = serializers.IntegerField(required=True, label=_("Number of multi-round conversations"))
# 最大携带知识库段落长度
max_paragraph_char_number = serializers.IntegerField(required=True, error_messages=ErrMessage.integer(
_("Maximum length of the knowledge base paragraph")))
max_paragraph_char_number = serializers.IntegerField(required=True,
label=_("Maximum length of the knowledge base paragraph"))
# 模板
prompt = serializers.CharField(required=True, error_messages=ErrMessage.char(_("Prompt word")))
prompt = serializers.CharField(required=True, label=_("Prompt word"))
system = serializers.CharField(required=False, allow_null=True, allow_blank=True,
error_messages=ErrMessage.char(_("System prompt words (role)")))
label=_("System prompt words (role)"))
# 补齐问题
padding_problem_text = serializers.CharField(required=False, error_messages=ErrMessage.char(_("Completion problem")))
padding_problem_text = serializers.CharField(required=False,
label=_("Completion problem"))
# 未查询到引用分段
no_references_setting = NoReferencesSetting(required=True, error_messages=ErrMessage.base(_("No reference segment settings")))
no_references_setting = NoReferencesSetting(required=True,
label=_("No reference segment settings"))

def get_step_serializer(self, manage: PipelineManage) -> Type[serializers.Serializer]:
return self.InstanceSerializer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,20 @@
from application.chat_pipeline.pipeline_manage import PipelineManage
from application.models import ChatRecord
from common.field.common import InstanceField
from common.util.field_message import ErrMessage


class IResetProblemStep(IBaseChatPipelineStep):
class InstanceSerializer(serializers.Serializer):
# 问题文本
problem_text = serializers.CharField(required=True, error_messages=ErrMessage.float(_("question")))
problem_text = serializers.CharField(required=True, label=_("question"))
# 历史对答
history_chat_record = serializers.ListField(child=InstanceField(model_type=ChatRecord, required=True),
error_messages=ErrMessage.list(_("History Questions")))
label=_("History Questions"))
# 大语言模型
model_id = serializers.UUIDField(required=False, allow_null=True, error_messages=ErrMessage.uuid(_("Model id")))
user_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid(_("User ID")))
model_id = serializers.UUIDField(required=False, allow_null=True, label=_("Model id"))
user_id = serializers.UUIDField(required=True, label=_("User ID"))
problem_optimization_prompt = serializers.CharField(required=False, max_length=102400,
error_messages=ErrMessage.char(
_("Question completion prompt")))
label=_("Question completion prompt"))

def get_step_serializer(self, manage: PipelineManage) -> Type[serializers.Serializer]:
return self.InstanceSerializer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

from application.chat_pipeline.step.reset_problem_step.i_reset_problem_step import IResetProblemStep
from application.models import ChatRecord
from common.util.split_model import flat_map
from setting.models_provider.tools import get_model_instance_by_model_user_id
from common.utils.split_model import flat_map
from models_provider.tools import get_model_instance_by_model_user_id

prompt = _(
"() contains the user's question. Answer the guessed user's question based on the context ({question}) Requirement: Output a complete question and put it in the <data></data> tag")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,36 +16,35 @@

from application.chat_pipeline.I_base_chat_pipeline import IBaseChatPipelineStep, ParagraphPipelineModel
from application.chat_pipeline.pipeline_manage import PipelineManage
from common.util.field_message import ErrMessage


class ISearchDatasetStep(IBaseChatPipelineStep):
class InstanceSerializer(serializers.Serializer):
# 原始问题文本
problem_text = serializers.CharField(required=True, error_messages=ErrMessage.char(_("question")))
problem_text = serializers.CharField(required=True, label=_("question"))
# 系统补全问题文本
padding_problem_text = serializers.CharField(required=False,
error_messages=ErrMessage.char(_("System completes question text")))
label=_("System completes question text"))
# 需要查询的数据集id列表
dataset_id_list = serializers.ListField(required=True, child=serializers.UUIDField(required=True),
error_messages=ErrMessage.list(_("Dataset id list")))
label=_("Dataset id list"))
# 需要排除的文档id
exclude_document_id_list = serializers.ListField(required=True, child=serializers.UUIDField(required=True),
error_messages=ErrMessage.list(_("List of document ids to exclude")))
label=_("List of document ids to exclude"))
# 需要排除向量id
exclude_paragraph_id_list = serializers.ListField(required=True, child=serializers.UUIDField(required=True),
error_messages=ErrMessage.list(_("List of exclusion vector ids")))
label=_("List of exclusion vector ids"))
# 需要查询的条数
top_n = serializers.IntegerField(required=True,
error_messages=ErrMessage.integer(_("Reference segment number")))
label=_("Reference segment number"))
# 相似度 0-1之间
similarity = serializers.FloatField(required=True, max_value=1, min_value=0,
error_messages=ErrMessage.float(_("Similarity")))
label=_("Similarity"))
search_mode = serializers.CharField(required=True, validators=[
validators.RegexValidator(regex=re.compile("^embedding|keywords|blend$"),
message=_("The type only supports embedding|keywords|blend"), code=500)
], error_messages=ErrMessage.char(_("Retrieval Mode")))
user_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid(_("User ID")))
], label=_("Retrieval Mode"))
user_id = serializers.UUIDField(required=True, label=_("User ID"))

def get_step_serializer(self, manage: PipelineManage) -> Type[InstanceSerializer]:
return self.InstanceSerializer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
from application.chat_pipeline.step.search_dataset_step.i_search_dataset_step import ISearchDatasetStep
from common.config.embedding_config import VectorStore, ModelManage
from common.db.search import native_search
from common.util.file_util import get_file_content
from dataset.models import Paragraph, DataSet
from embedding.models import SearchMode
from setting.models import Model
from setting.models_provider import get_model
from smartdoc.conf import PROJECT_DIR
from common.utils.common import get_file_content
from knowledge.models import Paragraph, Knowledge
from knowledge.models import SearchMode
from maxkb.conf import PROJECT_DIR
from models_provider.models import Model
from models_provider.tools import get_model


def get_model_by_id(_id, user_id):
Expand All @@ -36,12 +36,22 @@ def get_model_by_id(_id, user_id):


def get_embedding_id(dataset_id_list):
<<<<<<< Updated upstream:apps/chat/chat_pipeline/step/search_dataset_step/impl/base_search_dataset_step.py
dataset_list = QuerySet(DataSet).filter(id__in=dataset_id_list)
if len(set([dataset.embedding_model_id for dataset in dataset_list])) > 1:
raise Exception(_("The vector model of the associated knowledge base is inconsistent and the segmentation cannot be recalled."))
if len(dataset_list) == 0:
raise Exception(_("The knowledge base setting is wrong, please reset the knowledge base"))
return dataset_list[0].embedding_model_id
=======
knowledge_list = QuerySet(Knowledge).filter(id__in=dataset_id_list)
if len(set([knowledge.embedding_mode_id for knowledge in knowledge_list])) > 1:
raise Exception(
_("The vector model of the associated knowledge base is inconsistent and the segmentation cannot be recalled."))
if len(knowledge_list) == 0:
raise Exception(_("The knowledge base setting is wrong, please reset the knowledge base"))
return knowledge_list[0].embedding_mode_id
>>>>>>> Stashed changes:apps/application/chat_pipeline/step/search_dataset_step/impl/base_search_dataset_step.py


class BaseSearchDatasetStep(ISearchDatasetStep):
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from rest_framework import serializers
from rest_framework.exceptions import ValidationError, ErrorDetail

from chat.flow.common import Answer, NodeChunk
from application.flow.common import Answer, NodeChunk
from application.models import ChatRecord
from application.models import ApplicationPublicAccessClient
from common.constants.authentication_type import AuthenticationType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from chat.flow.i_step_node import INode, NodeResult
from application.flow.i_step_node import INode, NodeResult


class ChatNodeSerializer(serializers.Serializer):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent

from chat.flow.i_step_node import NodeResult, INode
from chat.flow.step_node.ai_chat_step_node.i_chat_node import IChatNode
from chat.flow.tools import Reasoning
from application.flow.i_step_node import NodeResult, INode
from application.flow.step_node.ai_chat_step_node.i_chat_node import IChatNode
from application.flow.tools import Reasoning
from models_provider.models import Model
from models_provider.tools import get_model_credential, get_model_instance_by_model_user_id

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from rest_framework import serializers

from chat.flow.i_step_node import INode, NodeResult
from application.flow.i_step_node import INode, NodeResult

from django.utils.translation import gettext_lazy as _

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import uuid
from typing import Dict, List

from chat.flow.common import Answer
from chat.flow.i_step_node import NodeResult, INode
from chat.flow.step_node.application_node.i_application_node import IApplicationNode
from application.flow.common import Answer
from application.flow.i_step_node import NodeResult, INode
from application.flow.step_node.application_node.i_application_node import IApplicationNode
from application.models import Chat


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class ContainCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class EqualCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class GECompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class GTCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare import Compare
from application.flow.step_node.condition_node.compare import Compare


class IsNotNullCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare import Compare
from application.flow.step_node.condition_node.compare import Compare


class IsNotTrueCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare import Compare
from application.flow.step_node.condition_node.compare import Compare


class IsNullCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare import Compare
from application.flow.step_node.condition_node.compare import Compare


class IsTrueCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class LECompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class LenEqualCompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class LenGECompare(Compare):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
from typing import List

from chat.flow.step_node.condition_node.compare.compare import Compare
from application.flow.step_node.condition_node.compare.compare import Compare


class LenGTCompare(Compare):
Expand Down
Loading
Loading