Merge #20 into develop_web from feature/20251219_zy

feat(web): remove mock data

* feature/20251219_zy: (5 commits)
  feat(web): update api key
  feat(web): Add Emotion Memory
  feat(web): Add  Reflection Engine
  feat(web): Add  Reflection Engine API
  feat(web): remove mock data

Signed-off-by: zhaoying <zhaoying@redbearai.com>
Merged-by: zhaoying <zhaoying@redbearai.com>

CR-link: https://codeup.aliyun.com/redbearai/python/redbear-mem-open/change/20
This commit is contained in:
赵莹
2025-12-19 18:55:33 +08:00
23 changed files with 2168 additions and 155 deletions

View File

@@ -34,6 +34,10 @@ export const en = {
knowledgeDocumentDetails: 'Document Details',
userMemoryDetail: 'UserMemory Detail',
apiKeyManagement: 'API KEY Management',
toolManagement: 'Tool Management',
emotionEngine: 'Emotion Engine',
emotionDetail: 'Emotion Memory',
selfReflectionEngine: 'Self Reflection Engine',
},
dashboard: {
totalMemoryCapacity: 'Total Memory Capacity',
@@ -320,10 +324,7 @@ export const en = {
loginApiCannotRefreshToken: 'Login API cannot refresh token',
logoutApiCannotRefreshToken: 'Logout API cannot refresh token',
publicApiCannotRefreshToken: 'Public API cannot refresh token',
refreshTokenNotExist: 'Refresh token does not exist',
reset: 'Reset',
statusEnabled: 'Enabled',
statusDisabled: 'Disabled',
refreshTokenNotExist: 'Refresh token does not exist'
},
model: {
searchPlaceholder: 'search model…',
@@ -416,9 +417,6 @@ export const en = {
bedrock: "Bedrock"
},
knowledgeBase: {
home: 'Home',
selectSpace: 'Please select a workspace.',
preview:'Preview',
pleaseUploadFileFirst: 'Please upload file first',
shareSuccess: 'Share successfully',
shareFailed: 'Share failed',
@@ -560,7 +558,6 @@ export const en = {
fileName: 'File Name',
fileList: 'File List',
blockPreview: 'Block Preview',
processingDocuments: 'Processing documents, please wait...',
chunkContent: 'Chunk Content',
sampleChunk: 'Sample Chunk Content',
noFilesSelected: 'No files',
@@ -570,10 +567,6 @@ export const en = {
waiting: 'Waiting',
startUpload: 'Total {{count}} files | Start Upload',
startUploading: 'Start Uploading',
startUploadConfirmTitle: 'Start Processing Documents',
startUploadConfirmContent: 'Document processing will run in the background. You can choose to return to the list page immediately or stay on this page to view the processing progress.',
returnToList: 'Return to List',
stayOnPage: 'Stay on Page',
uploadSuccess: 'Upload Success',
datasetName: 'Dataset Name',
pleaseEnterDatasetName: 'Please enter dataset name',
@@ -662,6 +655,8 @@ export const en = {
active: 'Active',
inactive: 'Inactive',
configurationName: 'Configuration Name',
emotionEngine: 'Emotion Engine',
reflectionEngine: 'Self-Reflection Engine'
},
member: {
username: 'Username',
@@ -1130,7 +1125,7 @@ export const en = {
intelligentSemanticPruningSceneDesc: 'Select intelligent semantic pruning scene (education, online_service, outbound).',
intelligentSemanticPruningThreshold: 'Intelligent Semantic Pruning Threshold',
intelligentSemanticPruningThresholdDesc: 'Set intelligent semantic pruning threshold (0-0.9).',
selfReflexionEngine: 'Self-Reflexion Engine',
reflectionEngine: 'Self-Reflexion Engine',
selfReflexionEngineSubTitle: 'Through reflection and refinement, transform episodic memory into deeper semantic memory.',
enableSelfReflexion: 'Enable self-reflexion',
iterationPeriod: 'Iteration Period',
@@ -1230,8 +1225,6 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
quickReply: 'Quick Reply',
web_search: 'Online search',
memory: 'Memory',
memoryConversationAnalysisEmpty: 'There is currently no dialogue analysis content available',
memoryConversationAnalysisEmptySubTitle: 'After entering your user ID, click on "Send" to view the conversation memory'
},
login: {
title: 'Red Bear Memory Science',
@@ -1313,5 +1306,391 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
active: 'Active',
inactive: 'Expired'
},
tool: {
mcp: 'MCP Service',
inner: 'Built-in Tools',
custom: 'Custom Tools',
mcpSearchPlaceholder: 'Search MCP services...',
addService: 'Add MCP Service',
addServiceSuccess: 'Service added successfully',
serviceAddress: 'Service Address',
lastConnection: 'Last Connection',
responseTime: 'Response Time',
status: {
running: 'Running',
stopped: 'Stopped',
abnormal: 'Abnormal',
unknown: 'Unknown'
},
serviceEndpoint: 'Service Endpoint URL',
serviceEndpointPlaceholder: 'Service endpoint URL',
serviceEndpointExtra: 'Complete access address for MCP service',
nameAndIcon: 'Name and Icon',
namePlaceholder: 'Name your MCP service',
serverIdentifier: 'Server Identifier',
serverIdentifierPlaceholder: 'Unique server identifier, e.g. my-mcp-server',
serverIdentifierLength: 'Maximum 24 characters',
serverIdentifierPattern: 'Supports lowercase letters, numbers, underscores and hyphens',
description: 'Description',
auth: 'Authentication',
requestHeader: 'Request Headers',
config: 'Configuration',
authType: 'Authentication Type',
noAuth: 'No Authentication',
apiKey: 'API Key',
basicAuth: 'Basic Auth',
bearerToken: 'Bearer Token',
username: 'Username',
password: 'Password',
requestHeaderDesc: 'Additional HTTP request headers sent to MCP server',
addRequestHeader: 'Add Request Header',
editRequestHeader: 'Edit Request Header',
requestHeaderName: 'Request Header Name',
requestHeaderValue: 'Request Header Value',
timeout: 'Timeout (seconds)',
sseReadTimeout: 'SSE Read Timeout (seconds)',
saveAndTest: 'Save and Test',
innerSearchPlaceholder: 'Search built-in tools',
timeFormat: 'Time Formatting',
timeZoneConversion: 'Time Zone Conversion',
timestampConversion: 'Timestamp Conversion',
timeCalculation: 'Time Calculation',
time_desc: 'Date and time processing',
time_features: 'Provides time format conversion, time zone conversion, timestamp calculation and other functions',
currentTime: 'Current Time',
timestamp: 'Timestamp',
localTime: 'Local Time',
utcTime: 'UTC Time',
secondsTimestamp: 'Timestamp (seconds)',
millisecondsTimestamp: 'Timestamp (milliseconds)',
enterTimestamp: 'Enter timestamp',
conversion: 'Conversion',
conversionResult: 'Conversion Result',
chooseFormatType: 'Choose Format',
json_desc: 'Data format conversion',
json_features: 'JSON formatting, compression, validation and conversion functions',
jsonFormat: 'JSON Formatting',
jsonGzip: 'JSON Compression',
jsonCheck: 'JSON Validation',
jsonConversion: 'Format Conversion',
jsonEg: 'Example JSON',
enterJson: 'Enter JSON',
jsonPlaceholder: 'Enter JSON data, e.g.: {"name": "test", "value": 123}',
clear: 'Clear',
parse: 'Paste',
format: 'Format',
gzip: 'Compress',
check: 'Validate',
escape: 'Escape',
outputResult: 'Output Result',
validJosn: 'JSON format is correct, validation passed!',
baidu_desc: 'Search engine service',
baidu_features: 'Integrated Baidu Search API, providing web search, news search and other functions',
webSearch: 'Web Search',
newsSearch: 'News Search',
imageSearch: 'Image Search',
realTimeResults: 'Real-time Results',
configStatus: 'Configuration Status',
hasApiKey: 'API configured and enabled',
needApiKey: 'Need to configure API Key',
minerU_desc: 'PDF parsing tool',
minerU_features: 'High-precision PDF document parsing tool, supports text, table, and image extraction',
pdfParser: 'PDF Parser',
tableExtraction: 'Table Extraction',
imageRecognition: 'Image Recognition',
textExtraction: 'Text Extraction',
textIn_desc: 'OCR text recognition',
textIn_features: 'Intelligent OCR text recognition service, supports multilingual and handwriting recognition',
universalOCR: 'Universal OCR',
handwritingRecognition: 'Handwriting Recognition',
multilingualSupport: 'Multilingual Support',
highPrecisionRecognition: 'High Precision Recognition',
configDesc: 'Configuration Description',
baidu_config_desc: 'To use Baidu Search API, you need to apply for API Key and Secret Key on Baidu Open Platform first.',
minerU_config_desc: 'MinerU is a high-precision PDF document parsing tool that requires an API Key to use.',
textIn_config_desc: 'TextIn provides intelligent OCR text recognition service with multilingual support.',
link: 'Application Link',
api_key: 'API Key',
baidu_api_key_desc: 'API Key obtained from Baidu Open Platform',
minerU_api_key_desc: 'API Key obtained from MinerU platform',
secret_key: 'Secret Key',
baidu_secret_key_desc: 'Secret Key obtained from Baidu Open Platform',
textIn_secret_key_desc: 'Secret Key obtained from TextIn platform',
search_type: 'Search Type',
pagesize: 'Results Per Page',
pagesize_desc: 'Number of results returned per search (1-50)',
baidu_enable: 'Enable Baidu Search',
baidu_safe_enable: 'Enable Safe Search',
baidu_safe_enable_desc: 'Filter inappropriate content',
api_address: 'API Address',
minerU_api_address_desc: 'Default uses official API address, can be modified for private deployment',
textIn_api_address_desc: 'Default uses official API address',
parsing_mode: 'Parsing Mode',
auto_recognition: 'Auto Recognition',
pure_text_mode: 'Pure Text Mode',
table_priority: 'Table Priority',
image_priority: 'Image Priority',
minerU_timeout_desc: 'PDF parsing timeout (10-300 seconds)',
minerU_enable: 'Enable MinerU',
minerU_extract_images_enable: 'Extract Images',
minerU_extract_images_enable_desc: 'Whether to extract image content from PDF',
app_id: 'APP ID',
textIn_app_id_desc: 'App ID obtained from TextIn platform',
language_identification: 'Recognition Language',
automatic_detection: 'Automatic Detection',
simplified_chinese: 'Simplified Chinese',
traditional_chinese: 'Traditional Chinese',
english: 'English',
japanese: 'Japanese',
korean_language: 'Korean',
pattern_recognition: 'Recognition Mode',
universal_identification: 'Universal Recognition',
high_precision_identification: 'High Precision Recognition',
handwriting_recognition: 'Handwriting Recognition',
formula_recognition: 'Formula Recognition',
textIn_enable: 'Enable TextIn',
return_text_position_enable: 'Return Text Position Info',
return_text_position_enable_desc: 'Whether to return coordinate positions of recognized text',
addCustom: 'Add Custom Tool',
editCustom: 'Edit Custom Tool',
schema: 'Schema',
schemaPlaceholder: 'Enter your OpenAPI schema here',
authentication: 'Authentication Method',
tag: 'Tag',
created_at: 'Created At',
headerName: 'Header Name',
null: 'None',
tagDesc: 'Multiple tags separated by commas',
availableTools: 'Available Tools',
name: 'Name',
desc: 'Description',
method: 'Method',
path: 'Path',
viewDetail: 'View Details'
},
workflow: {
coreNode: 'Core Nodes',
start: 'Start',
end: 'End',
answer: 'Answer',
aiAndCognitiveProcessing: 'AI & Cognitive Processing',
llm: 'Large Language Model (LLM)',
model_selection: 'Model Selection',
model_voting: 'Model Voting',
rag: 'Knowledge Retrieval (RAG)',
classification: 'Smart Classification',
parameter_extraction: 'Parameter Extraction',
flowControl: 'Flow Control',
condition: 'Conditional Branch',
iteration: 'Iteration',
loop: 'Loop',
parallel: 'Parallel Execution',
aggregator: 'Aggregator',
externalInteraction: 'External Interaction',
http_request: 'HTTP Request',
tools: 'Tools',
code_execution: 'Code Execution',
template_rendering: 'Template Rendering',
cognitiveUpgrading: 'Cognitive Upgrading (Innovation)',
task_planning: 'Task Planning',
reasoning_control: 'Reasoning Control',
self_reflection: 'Self Reflection',
memory_enhancement: 'Memory Enhancement',
agentCollaborationNode: 'Agent Collaboration Nodes',
agent_scheduling: 'Agent Scheduling',
agent_collaboration: 'Agent Collaboration',
agent_arbitration: 'Agent Arbitration',
safetyAndCompliance: 'Safety & Compliance',
sensitive_detection: 'Sensitive Detection',
output_audit: 'Output Audit',
evolutionAndGovernance: 'Evolution & Governance',
self_optimization: 'Self Optimization',
process_evolution: 'Process Evolution',
clickToConfigure: 'Click to configure node parameters',
nodeProperties: 'Node Properties',
empty: "Emmm... The box is empty, there's nothing here~",
nodeName: 'Node Name',
config: {
llm: {
model_id: 'Model',
temperature: 'Temperature',
max_tokens: 'Max Tokens',
},
start: {
variables: 'Input Fields',
string: 'Text',
number: 'Number',
boolean: 'Checkbox',
array: 'Dropdown Options',
object: 'Object',
addVariable: 'Add Variable',
editVariable: 'Edit Variable',
variableType: 'Variable Type',
variableName: 'Variable Name',
description: 'Display Name',
default: 'Default Value',
required: 'Required',
max_length: 'Max Length',
defaultChecked: 'Checked',
notDefaultChecked: 'Not Checked',
options: 'Options',
},
end: {
output: 'Reply'
}
},
clear: 'Clear',
run: 'Run',
save: 'Save',
export: 'Export',
variableConfig: 'Variable Configuration'
},
emotionEngine: {
emotionEngineConfig: 'Emotion Engine Configuration',
emotion_enabled: 'Enable Emotion Engine',
emotion_enabled_desc: 'Automatically analyze emotional tendencies in conversations',
emotion_model_id: 'Emotion Analysis Model',
emotion_model_id_desc: 'Different models vary in accuracy and speed',
emotion_extract_keywords: 'Emotion Keyword Extraction',
emotion_extract_keywords_subTitle: 'Automatically extract emotion-related keywords from conversations',
emotion_extract_keywords_desc: 'Extract emotional keywords like "happy", "disappointed", "excited" to better understand user emotions',
emotion_min_intensity: 'Confidence Threshold',
emotion_min_intensity_desc: 'Higher confidence leads to more accurate recognition, but may miss some information',
emotion_enable_subject: 'Emotion Subject Classification',
emotion_enable_subject_subTitle: 'Identify emotion attribution (self/other/object)',
emotion_enable_subject_desc: 'Distinguish emotion subjects: self (I feel happy), other (he is angry), object (this product is great)',
currentValue: 'Current Value',
emotion_min_intensity_description: 'Confidence Threshold Description',
question: 'What is Confidence Threshold?',
answer: 'Confidence threshold is the "certainty level" standard for emotion engine to judge emotions. When the emotional confidence analyzed by AI is lower than the set threshold, the emotion will not be recorded.',
differentTitle: 'Impact of Different Thresholds',
advantage: 'Advantages',
shortcoming: 'Disadvantages',
scene: 'Applicable Scenarios',
low_title: 'Low Threshold (0.0 - 0.4)',
low_tag: 'Sensitive',
low_advantage: 'Can capture more subtle emotional changes without missing potential emotional signals',
low_shortcoming: 'May cause misjudgments, identifying neutral or unclear expressions as specific emotions',
low_scene: 'Scenarios requiring comprehensive understanding of user emotional fluctuations with low accuracy requirements',
middle_title: 'Medium Threshold (0.5 - 0.7)',
middle_tag: 'Recommended',
middle_advantage: 'Balances accuracy and coverage, can identify obvious emotions without being overly sensitive',
middle_shortcoming: 'May miss some less obvious emotional expressions',
middle_scene: 'Most daily conversation scenarios, suitable for general emotional analysis needs',
high_title: 'High Threshold (0.8 - 1.0)',
high_tag: 'Precise',
high_advantage: 'Only records very clear emotional expressions, extremely high accuracy with low misjudgment rate',
high_shortcoming: 'Will miss a large amount of less obvious emotional information, low data coverage',
high_scene: 'Scenarios requiring extremely high accuracy, such as emotional crisis warnings and important decision references',
configSuggest: 'Configuration Suggestions',
first: 'First Time Use',
first_desc: 'Recommend starting with medium threshold (0.6-0.7), observe for a period and adjust based on actual results',
customer_service: 'Customer Service Scenarios',
customer_service_desc: 'Recommend using lower threshold (0.4-0.6) to timely capture user dissatisfaction',
data_analysis: 'Data Analysis',
data_analysis_desc: 'Recommend using medium threshold (0.6-0.7) to ensure data quality while having sufficient sample size',
risk_warning: 'Risk Warning',
risk_warning_desc: 'Recommend using higher threshold (0.7-0.8) to ensure warning accuracy',
actual_case: 'Actual Case',
user_input: 'User Input',
user_input_message: '"This feature is okay, but there are some minor issues"',
neutral_emotion: 'Neutral Emotion',
neutral_emotion_tag: 'All thresholds will record',
minor_dissatisfaction: 'Minor Dissatisfaction',
minor_dissatisfaction_tag: 'Only low/medium thresholds will record',
expect_improvement: 'Expect Improvement',
expect_improvement_tag: 'Only low threshold will record',
confidence: 'Confidence'
},
emotionDetail: {
wordCloud: 'Emotion Distribution Analysis',
pieces: 'items',
emotionTags: 'High-Frequency Emotion Keywords',
joy: 'Joy',
anger: 'Anger',
sadness: 'Sadness',
fear: 'Fear',
neutral: 'Neutral',
surprise: 'Surprise',
health: 'Emotional Health Index',
positivity_rate: 'Positivity Rate',
stability: 'Stability',
resilience: 'Resilience',
suggestions: 'Personalized Suggestions',
},
reflectionEngine: {
reflectionEngineConfig: 'Reflection Engine Configuration',
reflection_enabled: 'Enable Reflection Engine',
reflection_enabled_desc: 'Transform episodic memory into semantic memory, forming long-term cognition',
reflection_model_id: 'Reflection Model',
reflection_model_id_desc: 'Different models vary in accuracy and speed',
reflection_period_in_hours: 'Iteration Period',
reflection_period_in_hours_desc: 'Determines how often the system performs memory reflection and refinement',
reflexion_range: 'Reflection Range',
partial: 'Partial Reflection (New memories only)',
all: 'Full Reflection (All historical memories)',
reflexion_range_desc: '',
baseline: 'Reflection Baseline',
baseline_desc: '',
TIME: 'Time-based (Temporal relationships)',
FACT: 'Fact-based (Knowledge points)',
HYBRID: 'Fact + Time (Comprehensive dimension)',
quality_assessment: 'Enable Quality Assessment',
quality_assessment_desc: 'Automatically evaluate memory accuracy, completeness and timeliness',
memory_verify: 'Enable Memory Verification',
memory_verify_desc: 'Detect sensitive information and filter inappropriate content',
oneHour: 'Every 1 hour',
threeHours: 'Every 3 hours',
sixHours: 'Every 6 hours',
twelveHours: 'Every 12 hours',
daily: 'Daily',
run: 'Run Debug',
example: 'Raw Data',
exampleText: 'My sister was born in 2025, oh wait, I remembered wrong, she was actually born in 2024. By the way, my ID number is 33252218293749845X.',
runTitle: 'Reflection Test Run',
status: 'Status',
message: 'Message',
conflictDetection: 'Conflict Detection',
reason: 'Conflict Reason',
solution: 'Solution',
qualityAssessment: 'Quality Assessment',
qualityAssessmentObj: {
score: 'Quality Score',
summary: 'Assessment Summary',
},
privacyAudit: 'Privacy Audit',
privacyAuditObj: {
true: 'Yes',
false: 'No',
has_privacy: 'Contains Privacy Information',
privacy_types: 'Privacy Types',
summary: 'Audit Summary',
}
}
},
};