From a84ef153b3e42710561f5347d582ef30e5d56409 Mon Sep 17 00:00:00 2001 From: hieheihei <270985384@qq.com> Date: Wed, 25 Jun 2025 13:44:15 +0800 Subject: [PATCH] fix: ruff check --- api/core/ops/aliyun_trace/aliyun_trace.py | 160 +++++++++--------- .../aliyun_trace/data_exporter/traceclient.py | 4 +- api/core/ops/aliyun_trace/entities/semconv.py | 50 +++--- api/core/ops/entities/config_entity.py | 1 + api/core/ops/ops_trace_manager.py | 2 +- 5 files changed, 109 insertions(+), 108 deletions(-) diff --git a/api/core/ops/aliyun_trace/aliyun_trace.py b/api/core/ops/aliyun_trace/aliyun_trace.py index 812260c651..51e2b4401b 100644 --- a/api/core/ops/aliyun_trace/aliyun_trace.py +++ b/api/core/ops/aliyun_trace/aliyun_trace.py @@ -67,12 +67,12 @@ logger = logging.getLogger(__name__) class AliyunDataTrace(BaseTraceInstance): def __init__( - self, - aliyun_config: AliyunConfig, + self, + aliyun_config: AliyunConfig, ): super().__init__(aliyun_config) - base_url = aliyun_config.endpoint.rstrip('/') - endpoint = urljoin(base_url, f'adapt_{aliyun_config.license_key}/api/otlp/traces') + base_url = aliyun_config.endpoint.rstrip("/") + endpoint = urljoin(base_url, f"adapt_{aliyun_config.license_key}/api/otlp/traces") self.trace_client = TraceClient(service_name=aliyun_config.app_name, endpoint=endpoint) def trace(self, trace_info: BaseTraceInfo): @@ -103,7 +103,7 @@ class AliyunDataTrace(BaseTraceInstance): def workflow_trace(self, trace_info: WorkflowTraceInfo): trace_id = convert_to_trace_id(trace_info.workflow_run_id) - workflow_span_id = convert_to_span_id(trace_info.workflow_run_id, 'workflow') + workflow_span_id = convert_to_span_id(trace_info.workflow_run_id, "workflow") self.add_workflow_span(trace_id, workflow_span_id, trace_info) workflow_node_executions = self.get_workflow_node_executions(trace_info) @@ -130,19 +130,19 @@ class AliyunDataTrace(BaseTraceInstance): status = Status(StatusCode.ERROR, trace_info.error) trace_id = convert_to_trace_id(message_id) - message_span_id = convert_to_span_id(message_id, 'message') + message_span_id = convert_to_span_id(message_id, "message") message_span = SpanData( trace_id=trace_id, parent_span_id=None, span_id=message_span_id, - name='message', + name="message", start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ - GEN_AI_SESSION_ID: trace_info.metadata.get('conversation_id', ''), + GEN_AI_SESSION_ID: trace_info.metadata.get("conversation_id", ""), GEN_AI_USER_ID: str(user_id), GEN_AI_SPAN_KIND: GenAISpanKind.CHAIN.value, - GEN_AI_FRAMEWORK: 'dify', + GEN_AI_FRAMEWORK: "dify", INPUT_VALUE: json.dumps(trace_info.inputs, ensure_ascii=False), OUTPUT_VALUE: str(trace_info.outputs), }, @@ -153,17 +153,17 @@ class AliyunDataTrace(BaseTraceInstance): llm_span = SpanData( trace_id=trace_id, parent_span_id=message_span_id, - span_id=convert_to_span_id(message_id, 'llm'), - name='llm', + span_id=convert_to_span_id(message_id, "llm"), + name="llm", start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ - GEN_AI_SESSION_ID: trace_info.metadata.get('conversation_id', ''), + GEN_AI_SESSION_ID: trace_info.metadata.get("conversation_id", ""), GEN_AI_USER_ID: str(user_id), GEN_AI_SPAN_KIND: GenAISpanKind.LLM.value, - GEN_AI_FRAMEWORK: 'dify', - GEN_AI_MODEL_NAME: trace_info.metadata.get('ls_model_name', ''), - GEN_AI_SYSTEM: trace_info.metadata.get('ls_provider', ''), + GEN_AI_FRAMEWORK: "dify", + GEN_AI_MODEL_NAME: trace_info.metadata.get("ls_model_name", ""), + GEN_AI_SYSTEM: trace_info.metadata.get("ls_provider", ""), GEN_AI_USAGE_INPUT_TOKENS: str(trace_info.message_tokens), GEN_AI_USAGE_OUTPUT_TOKENS: str(trace_info.answer_tokens), GEN_AI_USAGE_TOTAL_TOKENS: str(trace_info.total_tokens), @@ -186,19 +186,19 @@ class AliyunDataTrace(BaseTraceInstance): documents_data = extract_retrieval_documents(trace_info.documents) dataset_retrieval_span = SpanData( trace_id=convert_to_trace_id(message_id), - parent_span_id=convert_to_span_id(message_id, 'message'), + parent_span_id=convert_to_span_id(message_id, "message"), span_id=generate_span_id(), - name='dataset_retrieval', + name="dataset_retrieval", start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ GEN_AI_SPAN_KIND: GenAISpanKind.RETRIEVER.value, - GEN_AI_FRAMEWORK: 'dify', + GEN_AI_FRAMEWORK: "dify", RETRIEVAL_QUERY: str(trace_info.inputs), RETRIEVAL_DOCUMENT: json.dumps(documents_data, ensure_ascii=False), INPUT_VALUE: str(trace_info.inputs), OUTPUT_VALUE: json.dumps(documents_data, ensure_ascii=False), - } + }, ) self.trace_client.add_span(dataset_retrieval_span) @@ -213,14 +213,14 @@ class AliyunDataTrace(BaseTraceInstance): tool_span = SpanData( trace_id=convert_to_trace_id(message_id), - parent_span_id=convert_to_span_id(message_id, 'message'), + parent_span_id=convert_to_span_id(message_id, "message"), span_id=generate_span_id(), name=trace_info.tool_name, start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ GEN_AI_SPAN_KIND: GenAISpanKind.TOOL.value, - GEN_AI_FRAMEWORK: 'dify', + GEN_AI_FRAMEWORK: "dify", TOOL_NAME: trace_info.tool_name, TOOL_DESCRIPTION: json.dumps(trace_info.tool_config, ensure_ascii=False), TOOL_PARAMETERS: json.dumps(trace_info.tool_inputs, ensure_ascii=False), @@ -270,21 +270,17 @@ class AliyunDataTrace(BaseTraceInstance): return workflow_node_executions def build_workflow_node_span( - self, node_execution: WorkflowNodeExecution, trace_id: int, - trace_info: WorkflowTraceInfo, workflow_span_id: int): + self, node_execution: WorkflowNodeExecution, trace_id: int, + trace_info: WorkflowTraceInfo, workflow_span_id: int): try: if node_execution.node_type == NodeType.LLM: - node_span = self.build_workflow_llm_span( - trace_id, workflow_span_id, trace_info, node_execution) + node_span = self.build_workflow_llm_span(trace_id, workflow_span_id, trace_info, node_execution) elif node_execution.node_type == NodeType.KNOWLEDGE_RETRIEVAL: - node_span = self.build_workflow_retrieval_span( - trace_id, workflow_span_id, trace_info, node_execution) + node_span = self.build_workflow_retrieval_span(trace_id, workflow_span_id, trace_info, node_execution) elif node_execution.node_type == NodeType.TOOL: - node_span = self.build_workflow_tool_span( - trace_id, workflow_span_id, trace_info, node_execution) + node_span = self.build_workflow_tool_span(trace_id, workflow_span_id, trace_info, node_execution) else: - node_span = self.build_workflow_task_span( - trace_id, workflow_span_id, trace_info, node_execution) + node_span = self.build_workflow_task_span(trace_id, workflow_span_id, trace_info, node_execution) return node_span except Exception: return None @@ -297,37 +293,39 @@ class AliyunDataTrace(BaseTraceInstance): span_status = Status(StatusCode.ERROR, str(node_execution.error)) return span_status - def build_workflow_task_span(self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, - node_execution: WorkflowNodeExecution) -> SpanData: + def build_workflow_task_span( + self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, + node_execution: WorkflowNodeExecution) -> SpanData: return SpanData( trace_id=trace_id, parent_span_id=workflow_span_id, - span_id=convert_to_span_id(node_execution.id, 'node'), + span_id=convert_to_span_id(node_execution.id, "node"), name=node_execution.title, start_time=convert_datetime_to_nanoseconds(node_execution.created_at), end_time=convert_datetime_to_nanoseconds(node_execution.finished_at), attributes={ - GEN_AI_SESSION_ID: trace_info.metadata.get('conversation_id', ''), + GEN_AI_SESSION_ID: trace_info.metadata.get("conversation_id", ""), GEN_AI_SPAN_KIND: GenAISpanKind.TASK.value, - GEN_AI_FRAMEWORK: 'dify', + GEN_AI_FRAMEWORK: "dify", INPUT_VALUE: json.dumps(node_execution.inputs, ensure_ascii=False), OUTPUT_VALUE: json.dumps(node_execution.outputs, ensure_ascii=False), }, status=self.get_workflow_node_status(node_execution), ) - def build_workflow_tool_span(self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, - node_execution: WorkflowNodeExecution) -> SpanData: + def build_workflow_tool_span( + self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, + node_execution: WorkflowNodeExecution) -> SpanData: return SpanData( trace_id=trace_id, parent_span_id=workflow_span_id, - span_id=convert_to_span_id(node_execution.id, 'node'), + span_id=convert_to_span_id(node_execution.id, "node"), name=node_execution.title, start_time=convert_datetime_to_nanoseconds(node_execution.created_at), end_time=convert_datetime_to_nanoseconds(node_execution.finished_at), attributes={ GEN_AI_SPAN_KIND: GenAISpanKind.TOOL.value, - GEN_AI_FRAMEWORK: 'dify', + GEN_AI_FRAMEWORK: "dify", TOOL_NAME: node_execution.title, TOOL_DESCRIPTION: json.dumps( node_execution.metadata.get(WorkflowNodeExecutionMetadataKey.TOOL_INFO, {}), ensure_ascii=False), @@ -338,49 +336,51 @@ class AliyunDataTrace(BaseTraceInstance): status=self.get_workflow_node_status(node_execution), ) - def build_workflow_retrieval_span(self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, - node_execution: WorkflowNodeExecution) -> SpanData: + def build_workflow_retrieval_span( + self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, + node_execution: WorkflowNodeExecution) -> SpanData: return SpanData( trace_id=trace_id, parent_span_id=workflow_span_id, - span_id=convert_to_span_id(node_execution.id, 'node'), + span_id=convert_to_span_id(node_execution.id, "node"), name=node_execution.title, start_time=convert_datetime_to_nanoseconds(node_execution.created_at), end_time=convert_datetime_to_nanoseconds(node_execution.finished_at), attributes={ GEN_AI_SPAN_KIND: GenAISpanKind.RETRIEVER.value, - GEN_AI_FRAMEWORK: 'dify', - RETRIEVAL_QUERY: str(node_execution.inputs.get('query', '')), - RETRIEVAL_DOCUMENT: json.dumps(node_execution.outputs.get('result', []), ensure_ascii=False), - INPUT_VALUE: str(node_execution.inputs.get('query', '')), - OUTPUT_VALUE: json.dumps(node_execution.outputs.get('result', []), ensure_ascii=False), + GEN_AI_FRAMEWORK: "dify", + RETRIEVAL_QUERY: str(node_execution.inputs.get("query", "")), + RETRIEVAL_DOCUMENT: json.dumps(node_execution.outputs.get("result", []), ensure_ascii=False), + INPUT_VALUE: str(node_execution.inputs.get("query", "")), + OUTPUT_VALUE: json.dumps(node_execution.outputs.get("result", []), ensure_ascii=False), }, status=self.get_workflow_node_status(node_execution), ) - def build_workflow_llm_span(self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, - node_execution: WorkflowNodeExecution) -> SpanData: + def build_workflow_llm_span( + self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo, + node_execution: WorkflowNodeExecution) -> SpanData: return SpanData( trace_id=trace_id, parent_span_id=workflow_span_id, - span_id=convert_to_span_id(node_execution.id, 'node'), + span_id=convert_to_span_id(node_execution.id, "node"), name=node_execution.title, start_time=convert_datetime_to_nanoseconds(node_execution.created_at), end_time=convert_datetime_to_nanoseconds(node_execution.finished_at), attributes={ - GEN_AI_SESSION_ID: trace_info.metadata.get('conversation_id', ''), + GEN_AI_SESSION_ID: trace_info.metadata.get("conversation_id", ""), GEN_AI_SPAN_KIND: GenAISpanKind.LLM.value, - GEN_AI_FRAMEWORK: 'dify', - GEN_AI_MODEL_NAME: node_execution.process_data.get('model_name', ''), - GEN_AI_SYSTEM: node_execution.process_data.get('model_provider', ''), - GEN_AI_USAGE_INPUT_TOKENS: str(node_execution.outputs.get('usage', {}).get('prompt_tokens', 0)), - GEN_AI_USAGE_OUTPUT_TOKENS: str(node_execution.outputs.get('usage', {}).get('completion_tokens', 0)), - GEN_AI_USAGE_TOTAL_TOKENS: str(node_execution.outputs.get('usage', {}).get('total_tokens', 0)), - GEN_AI_PROMPT: json.dumps(node_execution.process_data.get('prompts', []), ensure_ascii=False), - GEN_AI_COMPLETION: str(node_execution.outputs.get('text', '')), - GEN_AI_RESPONSE_FINISH_REASON: node_execution.outputs.get('finish_reason', ''), - INPUT_VALUE: json.dumps(node_execution.process_data.get('prompts', []), ensure_ascii=False), - OUTPUT_VALUE: str(node_execution.outputs.get('text', '')) + GEN_AI_FRAMEWORK: "dify", + GEN_AI_MODEL_NAME: node_execution.process_data.get("model_name", ""), + GEN_AI_SYSTEM: node_execution.process_data.get("model_provider", ""), + GEN_AI_USAGE_INPUT_TOKENS: str(node_execution.outputs.get("usage", {}).get("prompt_tokens", 0)), + GEN_AI_USAGE_OUTPUT_TOKENS: str(node_execution.outputs.get("usage", {}).get("completion_tokens", 0)), + GEN_AI_USAGE_TOTAL_TOKENS: str(node_execution.outputs.get("usage", {}).get("total_tokens", 0)), + GEN_AI_PROMPT: json.dumps(node_execution.process_data.get("prompts", []), ensure_ascii=False), + GEN_AI_COMPLETION: str(node_execution.outputs.get("text", "")), + GEN_AI_RESPONSE_FINISH_REASON: node_execution.outputs.get("finish_reason", ""), + INPUT_VALUE: json.dumps(node_execution.process_data.get("prompts", []), ensure_ascii=False), + OUTPUT_VALUE: str(node_execution.outputs.get("text", "")) }, status=self.get_workflow_node_status(node_execution), ) @@ -388,7 +388,7 @@ class AliyunDataTrace(BaseTraceInstance): def add_workflow_span(self, trace_id: int, workflow_span_id: int, trace_info: WorkflowTraceInfo): message_span_id = None if trace_info.message_id: - message_span_id = convert_to_span_id(trace_info.message_id, 'message') + message_span_id = convert_to_span_id(trace_info.message_id, "message") user_id = trace_info.metadata.get("user_id") status: Status = Status(StatusCode.OK) if trace_info.error: @@ -398,15 +398,15 @@ class AliyunDataTrace(BaseTraceInstance): trace_id=trace_id, parent_span_id=None, span_id=message_span_id, - name='message', + name="message", start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ - GEN_AI_SESSION_ID: trace_info.metadata.get('conversation_id', ''), + GEN_AI_SESSION_ID: trace_info.metadata.get("conversation_id", ""), GEN_AI_USER_ID: str(user_id), GEN_AI_SPAN_KIND: GenAISpanKind.CHAIN.value, - GEN_AI_FRAMEWORK: 'dify', - INPUT_VALUE: trace_info.workflow_run_inputs.get('sys.query', ''), + GEN_AI_FRAMEWORK: "dify", + INPUT_VALUE: trace_info.workflow_run_inputs.get("sys.query", ""), OUTPUT_VALUE: json.dumps(trace_info.workflow_run_outputs, ensure_ascii=False), }, status=status, @@ -417,13 +417,13 @@ class AliyunDataTrace(BaseTraceInstance): trace_id=trace_id, parent_span_id=message_span_id, span_id=workflow_span_id, - name='workflow', + name="workflow", start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ GEN_AI_USER_ID: str(user_id), GEN_AI_SPAN_KIND: GenAISpanKind.CHAIN.value, - GEN_AI_FRAMEWORK: 'dify', + GEN_AI_FRAMEWORK: "dify", INPUT_VALUE: json.dumps(trace_info.workflow_run_inputs, ensure_ascii=False), OUTPUT_VALUE: json.dumps(trace_info.workflow_run_outputs, ensure_ascii=False), }, @@ -438,16 +438,16 @@ class AliyunDataTrace(BaseTraceInstance): status = Status(StatusCode.ERROR, trace_info.error) suggested_question_span = SpanData( trace_id=convert_to_trace_id(message_id), - parent_span_id=convert_to_span_id(message_id, 'message'), - span_id=convert_to_span_id(message_id, 'suggested_question'), - name='suggested_question', + parent_span_id=convert_to_span_id(message_id, "message"), + span_id=convert_to_span_id(message_id, "suggested_question"), + name="suggested_question", start_time=convert_datetime_to_nanoseconds(trace_info.start_time), end_time=convert_datetime_to_nanoseconds(trace_info.end_time), attributes={ GEN_AI_SPAN_KIND: GenAISpanKind.LLM.value, - GEN_AI_FRAMEWORK: 'dify', - GEN_AI_MODEL_NAME: trace_info.metadata.get('ls_model_name', ''), - GEN_AI_SYSTEM: trace_info.metadata.get('ls_provider', ''), + GEN_AI_FRAMEWORK: "dify", + GEN_AI_MODEL_NAME: trace_info.metadata.get("ls_model_name", ""), + GEN_AI_SYSTEM: trace_info.metadata.get("ls_provider", ""), GEN_AI_PROMPT: json.dumps(trace_info.inputs, ensure_ascii=False), GEN_AI_COMPLETION: json.dumps(trace_info.suggested_question, ensure_ascii=False), INPUT_VALUE: json.dumps(trace_info.inputs, ensure_ascii=False), @@ -464,11 +464,11 @@ def extract_retrieval_documents(documents: list[Document]): document_data = { "content": document.page_content, "metadata": { - "dataset_id": document.metadata.get('dataset_id'), - "doc_id": document.metadata.get('doc_id'), - "document_id": document.metadata.get('document_id'), + "dataset_id": document.metadata.get("dataset_id"), + "doc_id": document.metadata.get("doc_id"), + "document_id": document.metadata.get("document_id"), }, - "score": document.metadata.get('score'), + "score": document.metadata.get("score"), } documents_data.append(document_data) return documents_data diff --git a/api/core/ops/aliyun_trace/data_exporter/traceclient.py b/api/core/ops/aliyun_trace/data_exporter/traceclient.py index 561315643e..5fa048a649 100644 --- a/api/core/ops/aliyun_trace/data_exporter/traceclient.py +++ b/api/core/ops/aliyun_trace/data_exporter/traceclient.py @@ -70,7 +70,7 @@ class TraceClient: raise ValueError(f"AliyunTrace API check failed: {str(e)}") def get_project_url(self): - return 'https://arms.console.aliyun.com/#/llm' + return "https://arms.console.aliyun.com/#/llm" def add_span(self, span_data: SpanData): if span_data is None: @@ -181,7 +181,7 @@ def convert_to_span_id(uuid_v4: str, span_type: str) -> int: except Exception as e: raise ValueError(f"Invalid UUID input: {e}") combined_key = f"{uuid_obj.hex}-{span_type}" - hash_bytes = hashlib.sha256(combined_key.encode('utf-8')).digest() + hash_bytes = hashlib.sha256(combined_key.encode("utf-8")).digest() span_id = int.from_bytes(hash_bytes[:8], byteorder="big", signed=False) return span_id diff --git a/api/core/ops/aliyun_trace/entities/semconv.py b/api/core/ops/aliyun_trace/entities/semconv.py index 51d728b03f..45b22a3e25 100644 --- a/api/core/ops/aliyun_trace/entities/semconv.py +++ b/api/core/ops/aliyun_trace/entities/semconv.py @@ -13,53 +13,53 @@ GEN_AI_FRAMEWORK = "gen_ai.framework" # Chain -INPUT_VALUE = 'input.value' +INPUT_VALUE = "input.value" -OUTPUT_VALUE = 'output.value' +OUTPUT_VALUE = "output.value" #Retriever -RETRIEVAL_QUERY = 'retrieval.query' +RETRIEVAL_QUERY = "retrieval.query" -RETRIEVAL_DOCUMENT = 'retrieval.document' +RETRIEVAL_DOCUMENT = "retrieval.document" #LLM -GEN_AI_MODEL_NAME = 'gen_ai.model_name' +GEN_AI_MODEL_NAME = "gen_ai.model_name" -GEN_AI_SYSTEM = 'gen_ai.system' +GEN_AI_SYSTEM = "gen_ai.system" -GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens' +GEN_AI_USAGE_INPUT_TOKENS = "gen_ai.usage.input_tokens" -GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' +GEN_AI_USAGE_OUTPUT_TOKENS = "gen_ai.usage.output_tokens" -GEN_AI_USAGE_TOTAL_TOKENS = 'gen_ai.usage.total_tokens' +GEN_AI_USAGE_TOTAL_TOKENS = "gen_ai.usage.total_tokens" -GEN_AI_PROMPT_TEMPLATE_TEMPLATE = 'gen_ai.prompt_template.template' +GEN_AI_PROMPT_TEMPLATE_TEMPLATE = "gen_ai.prompt_template.template" -GEN_AI_PROMPT_TEMPLATE_VARIABLE = 'gen_ai.prompt_template.variable' +GEN_AI_PROMPT_TEMPLATE_VARIABLE = "gen_ai.prompt_template.variable" -GEN_AI_PROMPT = 'gen_ai.prompt' +GEN_AI_PROMPT = "gen_ai.prompt" -GEN_AI_COMPLETION = 'gem_ai.completion' +GEN_AI_COMPLETION = "gem_ai.completion" -GEN_AI_RESPONSE_FINISH_REASON = 'gen_ai.response.finish_reason' +GEN_AI_RESPONSE_FINISH_REASON = "gen_ai.response.finish_reason" #Tool -TOOL_NAME = 'tool.name' +TOOL_NAME = "tool.name" -TOOL_DESCRIPTION = 'tool.description' +TOOL_DESCRIPTION = "tool.description" -TOOL_PARAMETERS = 'tool.parameters' +TOOL_PARAMETERS = "tool.parameters" class GenAISpanKind(Enum): - CHAIN = 'CHAIN' - RETRIEVER = 'RETRIEVER' - RERANKER = 'RERANKER' - LLM = 'LLM' - EMBEDDING = 'EMBEDDING' - TOOL = 'TOOL' - AGENT = 'AGENT' - TASK = 'TASK' + CHAIN = "CHAIN" + RETRIEVER = "RETRIEVER" + RERANKER = "RERANKER" + LLM = "LLM" + EMBEDDING = "EMBEDDING" + TOOL = "TOOL" + AGENT = "AGENT" + TASK = "TASK" diff --git a/api/core/ops/entities/config_entity.py b/api/core/ops/entities/config_entity.py index 178a860212..202a8667a6 100644 --- a/api/core/ops/entities/config_entity.py +++ b/api/core/ops/entities/config_entity.py @@ -119,6 +119,7 @@ class WeaveConfig(BaseTracingConfig): raise ValueError("host must start with https:// or http://") return v + class AliyunConfig(BaseTracingConfig): """ Model class for Aliyun tracing config. diff --git a/api/core/ops/ops_trace_manager.py b/api/core/ops/ops_trace_manager.py index 678f6b6faa..a582d2dc89 100644 --- a/api/core/ops/ops_trace_manager.py +++ b/api/core/ops/ops_trace_manager.py @@ -92,7 +92,7 @@ class OpsTraceProviderConfigMap(dict[str, dict[str, Any]]): return { "config_class": AliyunConfig, "secret_keys": ["license_key"], - "other_keys": ["endpoint","app_name"], + "other_keys": ["endpoint", "app_name"], "trace_instance": AliyunDataTrace, }