| @@ -15,6 +15,7 @@ from core.memory.token_buffer_memory import TokenBufferMemory | |||
| from core.model_manager import ModelInstance, ModelManager | |||
| from core.model_runtime.entities.llm_entities import LLMUsage | |||
| from core.model_runtime.entities.model_entities import AIModelEntity, ModelType | |||
| from core.model_runtime.utils.encoders import jsonable_encoder | |||
| from core.plugin.entities.request import InvokeCredentials | |||
| from core.plugin.impl.exc import PluginDaemonClientSideError | |||
| from core.plugin.impl.plugin import PluginInstaller | |||
| @@ -692,7 +693,13 @@ class AgentNode(BaseNode): | |||
| yield RunCompletedEvent( | |||
| run_result=NodeRunResult( | |||
| status=WorkflowNodeExecutionStatus.SUCCEEDED, | |||
| outputs={"text": text, "files": ArrayFileSegment(value=files), "json": json_output, **variables}, | |||
| outputs={ | |||
| "text": text, | |||
| "usage": jsonable_encoder(llm_usage), | |||
| "files": ArrayFileSegment(value=files), | |||
| "json": json_output, | |||
| **variables, | |||
| }, | |||
| metadata={ | |||
| **agent_execution_metadata, | |||
| WorkflowNodeExecutionMetadataKey.TOOL_INFO: tool_info, | |||
| @@ -467,6 +467,13 @@ export const SUPPORT_OUTPUT_VARS_NODE = [ | |||
| BlockEnum.Agent, | |||
| ] | |||
| export const AGENT_OUTPUT_STRUCT: Var[] = [ | |||
| { | |||
| variable: 'usage', | |||
| type: VarType.object, | |||
| }, | |||
| ] | |||
| export const LLM_OUTPUT_STRUCT: Var[] = [ | |||
| { | |||
| variable: 'text', | |||
| @@ -24,6 +24,7 @@ import type { VariableAssignerNodeType } from '@/app/components/workflow/nodes/v | |||
| import type { Field as StructField } from '@/app/components/workflow/nodes/llm/types' | |||
| import { | |||
| AGENT_OUTPUT_STRUCT, | |||
| HTTP_REQUEST_OUTPUT_STRUCT, | |||
| KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT, | |||
| LLM_OUTPUT_STRUCT, | |||
| @@ -498,6 +499,7 @@ const formatItem = ( | |||
| res.vars = [ | |||
| ...outputs, | |||
| ...TOOL_OUTPUT_STRUCT, | |||
| ...AGENT_OUTPUT_STRUCT, | |||
| ] | |||
| break | |||
| } | |||
| @@ -100,6 +100,11 @@ const AgentPanel: FC<NodePanelProps<AgentNodeType>> = (props) => { | |||
| type='String' | |||
| description={t(`${i18nPrefix}.outputVars.text`)} | |||
| /> | |||
| <VarItem | |||
| name='usage' | |||
| type='object' | |||
| description={t(`${i18nPrefix}.outputVars.usage`)} | |||
| /> | |||
| <VarItem | |||
| name='files' | |||
| type='Array[File]' | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| transfer_method: 'Übertragungsmethode. Wert ist remote_url oder local_file', | |||
| }, | |||
| text: 'Von Agenten generierte Inhalte', | |||
| usage: 'Nutzungsinformationen des Modells', | |||
| json: 'Vom Agenten generiertes JSON', | |||
| }, | |||
| checkList: { | |||
| @@ -894,6 +894,7 @@ const translation = { | |||
| }, | |||
| outputVars: { | |||
| text: 'agent generated content', | |||
| usage: 'Model Usage Information', | |||
| files: { | |||
| title: 'agent generated files', | |||
| type: 'Support type. Now only support image', | |||
| @@ -843,6 +843,7 @@ const translation = { | |||
| }, | |||
| json: 'JSON generado por el agente', | |||
| text: 'Contenido generado por el agente', | |||
| usage: 'Información de uso del modelo', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: 'Estrategia no seleccionada', | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| type: 'نوع پشتیبانی. اکنون فقط از تصویر پشتیبانی می کند', | |||
| }, | |||
| text: 'محتوای تولید شده توسط عامل', | |||
| usage: 'اطلاعات استفاده از مدل', | |||
| json: 'عامل JSON را تولید کرد', | |||
| }, | |||
| checkList: { | |||
| @@ -843,6 +843,7 @@ const translation = { | |||
| }, | |||
| json: 'JSON généré par l’agent', | |||
| text: 'Contenu généré par l’agent', | |||
| usage: 'Informations sur l’utilisation du modèle', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: 'Stratégie non sélectionnée', | |||
| @@ -862,6 +862,7 @@ const translation = { | |||
| title: 'एजेंट द्वारा उत्पन्न फ़ाइलें', | |||
| }, | |||
| text: 'एजेंट द्वारा उत्पन्न सामग्री', | |||
| usage: 'मॉडल उपयोग जानकारी', | |||
| json: 'एजेंट द्वारा उत्पन्न जेसन', | |||
| }, | |||
| checkList: { | |||
| @@ -868,6 +868,7 @@ const translation = { | |||
| upload_file_id: 'Carica l\'ID del file', | |||
| }, | |||
| text: 'Contenuto generato dall\'agente', | |||
| usage: 'Informazioni sull\'utilizzo del modello', | |||
| json: 'JSON generato dall\'agente', | |||
| }, | |||
| checkList: { | |||
| @@ -882,6 +882,7 @@ const translation = { | |||
| }, | |||
| text: 'エージェント生成コンテンツ', | |||
| json: 'エージェント生成の JSON', | |||
| usage: 'モデル使用量', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: '戦略が選択されていません', | |||
| @@ -885,6 +885,7 @@ const translation = { | |||
| }, | |||
| json: '에이전트 생성 JSON', | |||
| text: '상담원이 생성한 콘텐츠', | |||
| usage: '모델 사용 정보', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: '전략이 선택되지 않음', | |||
| @@ -843,6 +843,7 @@ const translation = { | |||
| }, | |||
| json: 'Kod JSON wygenerowany przez agenta', | |||
| text: 'Treści generowane przez agentów', | |||
| usage: 'Informacje o użyciu modelu', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: 'Nie wybrano strategii', | |||
| @@ -843,6 +843,7 @@ const translation = { | |||
| }, | |||
| json: 'JSON gerado pelo agente', | |||
| text: 'Conteúdo gerado pelo agente', | |||
| usage: 'Informações de uso do modelo', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: 'Estratégia não selecionada', | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| url: 'Adresa URL a imaginii', | |||
| }, | |||
| text: 'Conținut generat de agent', | |||
| usage: 'Informații de utilizare a modelului', | |||
| json: 'JSON generat de agent', | |||
| }, | |||
| checkList: { | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| title: 'Файлы, созданные агентом', | |||
| }, | |||
| text: 'Контент, генерируемый агентом', | |||
| usage: 'Информация об использовании модели', | |||
| json: 'JSON, сгенерированный агентом', | |||
| }, | |||
| checkList: { | |||
| @@ -882,6 +882,7 @@ const translation = { | |||
| }, | |||
| json: 'agent generiran json', | |||
| text: 'vsebina, ki jo je ustvaril agent', | |||
| usage: 'informacije o uporabi modela', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: 'Strategija ni izbrana', | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| type: 'ประเภทการสนับสนุน ตอนนี้รองรับเฉพาะรูปภาพ', | |||
| }, | |||
| text: 'เนื้อหาที่สร้างตัวแทน', | |||
| usage: 'ข้อมูลการใช้งานรุ่น', | |||
| json: 'ตัวแทนสร้าง JSON', | |||
| }, | |||
| checkList: { | |||
| @@ -843,6 +843,7 @@ const translation = { | |||
| url: 'Resim url\'si', | |||
| }, | |||
| text: 'Temsilci Tarafından Oluşturulan İçerik', | |||
| usage: 'Model Kullanım Bilgileri', | |||
| json: 'Aracı tarafından oluşturulan JSON', | |||
| }, | |||
| checkList: { | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| title: 'Файли, створені агентом', | |||
| }, | |||
| text: 'Контент, створений агентом', | |||
| usage: 'Інформація про використання моделі', | |||
| json: 'Агент згенерував JSON', | |||
| }, | |||
| checkList: { | |||
| @@ -843,6 +843,7 @@ const translation = { | |||
| }, | |||
| json: 'JSON do tác nhân tạo', | |||
| text: 'Nội dung do tác nhân tạo', | |||
| usage: 'Thông tin sử dụng mô hình', | |||
| }, | |||
| checkList: { | |||
| strategyNotSelected: 'Chiến lược không được chọn', | |||
| @@ -894,6 +894,7 @@ const translation = { | |||
| }, | |||
| outputVars: { | |||
| text: 'agent 生成的内容', | |||
| usage: '模型用量信息', | |||
| files: { | |||
| title: 'agent 生成的文件', | |||
| type: '支持类型。现在只支持图片', | |||
| @@ -842,6 +842,7 @@ const translation = { | |||
| upload_file_id: '上傳檔 ID', | |||
| }, | |||
| text: '代理生成的內容', | |||
| usage: '模型用量信息', | |||
| json: '代理生成的 JSON', | |||
| }, | |||
| checkList: { | |||