1548 Commits

Author SHA1 Message Date
Mark
aecb0f6497 Merge branch 'feature/rag2' into release/v0.3.1
* feature/rag2:
  [modify] fix
  [modify] Optimize ES connections and add rerank security checks
2026-04-21 13:44:39 +08:00
Timebomb2018
8011610acc fix(model_service): sync model capability and is_omni to associated api_keys 2026-04-21 12:15:14 +08:00
wwq
f1dc507b5c fix: 优化知识库和模型引用解析逻辑
移除对字符串长度的UUID验证,仅检查是否为有效UUID或非"None"字符串
2026-04-21 11:55:00 +08:00
wwq
20ddc76a4d feat(model_parsing): add model reference resolution for LLM and related node types
- Add model reference resolution for LLM, Question Classifier, and Parameter Extractor nodes.
- Support parsing various model reference formats, including dictionaries, UUID strings, and name strings, when `model_id` is present.
- Add warning logs for cases where model resolution fails.
2026-04-20 21:48:45 +08:00
山程漫悟
84ca98555d Merge pull request #948 from SuanmoSuanyangTechnology/fix/wxy_031
refactor(knowledge_service): refactor model binding logic into generic function
2026-04-20 21:28:03 +08:00
Timebomb2018
7f3c48ce2a Merge remote-tracking branch 'origin/release/v0.3.1' into fix/Timebomb_031 2026-04-20 20:48:46 +08:00
Timebomb2018
e5c16a2a24 refactor(model_service): remove hardcoded extra_params from model initialization 2026-04-20 20:48:00 +08:00
wwq
8887600f7d refactor(knowledge_service): refactor model binding logic into generic function
- Extract duplicate model binding logic into `_get_model_by_name_or_fallback`.
- Implement logic to prioritize workspace default configuration, falling back to the tenant's first available model if not found.
- Simplify binding code for embedding, rerank, and LLM models.
2026-04-20 19:01:06 +08:00
山程漫悟
df6eb74b28 Merge pull request #947 from wanxunyang/feature/add-quota-check-decorator
refactor(api_key): change rate limit handling to auto-cap at tenant l…
2026-04-20 18:48:15 +08:00
wwq
b4b9974064 refactor(api_key): change rate limit handling to auto-cap at tenant limit
- Replace exception throwing with automatic capping when rate limit exceeds tenant plan limit, improving user experience.
2026-04-20 18:45:17 +08:00
山程漫悟
d60f838fb8 Merge pull request #939 from wanxunyang/feature/add-quota-check-decorator
feat(quota): refactor quota management and rate limiting services
2026-04-20 18:36:33 +08:00
wwq
817aa78d03 fix(rate_limit): differentiate between tenant plan and API Key QPS limit errors
- Add logic to detect tenant plan QPS limits and return a specific error message when triggered.
- Simplify boolean check in model activation quota validation.
2026-04-20 18:34:18 +08:00
lanceyq
94d2d975ee fix(memory): use end_user.workspace_id instead of app.workspace_id in log message
Corrected variable reference in get_end_user_connected_config log statement. The previous code referenced app.workspace_id which could be incorrect or undefined in this context.
2026-04-20 18:26:20 +08:00
wwq
d59990d326 fix(rate_limit): differentiate between tenant plan and API Key QPS limit errors
- Add logic to detect tenant plan QPS limits and return a specific error message when triggered.
- Simplify boolean check in model activation quota validation.
2026-04-20 18:25:39 +08:00
wwq
3227c25b07 fix(quota): fix tenant ID retrieval and QPS counting logic
- Fix issue where tenant ID lookup from shared records failed to query the workspace correctly.
- Switch QPS counting from sliding window to simple counter to improve performance and simplify logic.
- Remove unnecessary `time` module import.
2026-04-20 18:10:28 +08:00
Eternity
dc3207b1d3 Merge branch 'develop' into refactor/memory_search
# Conflicts:
#	api/app/core/memory/storage_services/search/__init__.py
2026-04-20 18:07:07 +08:00
wwq
08b5c7bc8a perf(限流服务): 优化Redis查询以减少命令数量
使用zcount替代zremrangebyscore和zcard组合查询,减少一次Redis操作
2026-04-20 17:46:05 +08:00
Eternity
688503a1ca refactor(memory): integrate unified memory service into agent controller
- Replace direct memory agent service calls with unified MemoryService in read endpoint
- Update query preprocessor to use new prompt format and return structured queries
- Enhance MemorySearchResult model with filtering, merging, and ID tracking capabilities
- Add intermediate outputs display for problem split, perceptual retrieval, and search results
- Fix parameter alignment and remove unused history parameter in memory agent service
2026-04-20 17:43:52 +08:00
wwq
b03300c804 refactor(rate_limit): refactor API Key rate limiting and remove tenant-level QPS check
- Streamline rate limit check flow by removing redundant tenant-level QPS checks.
- Restrict checks to API Key QPS and plan degradation protection only.
- Update constant naming and error message handling for consistency.
2026-04-20 17:18:05 +08:00
lanceyq
fb1160e833 fix(api): make unused message body parameter optional in create_end_user
Change Body(...) to Body(None) for the message parameter which is never
used directly (request body is read via request.json() instead).
The required marker caused unnecessary 422 validation errors.
2026-04-20 16:21:18 +08:00
wwq
c448cf0660 refactor(rate-limit): change rate limiting granularity from tenant to API Key
- Refactor rate limiting mechanism to limit per API Key instead of per tenant (workspace).
- Update error code logic and Redis key naming conventions.
- Adjust quota usage statistics to display the QPS of the API Key closest to its limit.
2026-04-20 16:13:30 +08:00
wwq
48f3d9b105 feat(quota): refactor quota management and rate limiting services
- Add `API_KEY_RATE_LIMIT_EXCEEDED` error code.
- Refactor `QuotaExceededError` to support resource type localization.
- Optimize rate limiting service by implementing the sliding window algorithm.
- Add rate limit validation for tenant plans.
- Unify quota check decorator to support both synchronous and asynchronous operations.
- Enhance quota usage statistics endpoints.
2026-04-20 15:10:12 +08:00
Ke Sun
7f1cf13b23 Merge pull request #932 from SuanmoSuanyangTechnology/fix/extract-metadata
refactor(memory): insert new metadata values at list head for recency…
2026-04-17 21:04:38 +08:00
Ke Sun
d4129edcf5 Merge pull request #923 from SuanmoSuanyangTechnology/feat/enduser-info-apikey
feat(memory): add V1 memory config management endpoints and memory read/write API
2026-04-17 21:03:10 +08:00
Timebomb2018
7b5d7696cb feat(workflow): support variable input type in if-else node conditions 2026-04-17 20:26:44 +08:00
山程漫悟
81d58b001f Merge pull request #931 from wanxunyang/develop-wxy
**fix(tenant_subscription): correct quota field name from quota to quotas**
2026-04-17 18:45:44 +08:00
wwq
99bc84a9f2 feat(workflow): 增强工作流节点解析功能
添加工作流节点解析方法,支持工具和知识库ID的匹配与验证
改进知识库和工具解析逻辑,优先匹配ID并处理共享资源
2026-04-17 18:34:15 +08:00
Timebomb2018
d4a1904b19 refactor(workflow): rename condition variables to expression in if-else node logic 2026-04-17 18:02:48 +08:00
lanceyq
ecdad19f54 perf(memory): truncate profile list fields to 5 items in get_end_user_info response
Limit role, domain, expertise, and interests arrays to MAX_PROFILE_LIST_SIZE (5) entries when returning end user info to reduce response payload size.
2026-04-17 17:54:54 +08:00
Timebomb2018
fb93c509f4 refactor(workflow): simplify if-else node condition structure by removing nested condition groups
The changes remove the `ConditionGroup` abstraction and flatten condition expressions directly under `ConditionBranchConfig.expressions`. This simplifies the data model and evaluation logic, eliminating redundant grouping layers while preserving all functionality. The migration logic and group-level operators are removed as they are no longer needed.

BREAKING CHANGE: `ConditionBranchConfig.expressions` now expects a flat list of `ConditionDetail` instead of `ConditionGroup`; existing configurations must be updated to use direct condition lists.
2026-04-17 17:46:49 +08:00
miao
f597139913 feat(memory-config): add V1 emotion and reflection engine config endpoints
Add read/update endpoints for emotion engine config (read_config_emotion, update_config_emotion)
Add read/update endpoints for reflection engine config (read_config_reflection, update_config_reflection)
Add EmotionConfigUpdateRequest and ReflectionConfigUpdateRequest schemas
Reuse emotion_config_controller and memory_reflection_controller with ownership verification
2026-04-17 17:35:19 +08:00
lanceyq
113ae59f84 refactor(memory): insert new metadata values at list head for recency ordering
Change list.append() to list.insert(0, ...) in extract_user_metadata_task so that newly extracted user metadata values appear at the front of each field list, maintaining a newest-first ordering.
2026-04-17 17:33:17 +08:00
Timebomb2018
62c721bdf6 feat(workflow): support array[file] field-level conditions in if-else nodes
Added support for evaluating conditions on individual fields of file objects within array[file] variables. Extended variable pool to extract fields from array elements, introduced new condition models (SubVariableConditionItem, SubVariableCondition, ConditionGroup), and added ArrayFileContainsOperator to handle contains/not_contains logic with nested sub-conditions. Includes backward compatibility migration for legacy flat expressions.
2026-04-17 17:27:51 +08:00
wwq
d5272af76f fix(tenant_subscription): 修正配额字段名称从quota改为quotas 2026-04-17 14:41:44 +08:00
Timebomb2018
377ddd2b9b fix(llm): unify JSON output handling across providers and fix tool+json_output compatibility
- Remove redundant `response_format` injection for VOLCANO provider since it's unsupported; rely on system prompt injection instead
- Extend system prompt JSON injection logic to cover VOLCANO and tool-enabled cases universally
- Simplify model parameter construction by removing redundant `params["model_kwargs"] = model_kwargs` assignments
- Refactor `CompatibleChatOpenAI._get_request_payload` to strip `response_format` when tools are present, avoiding strict validation errors in langchain_openai
- Fix timestamp calculation order in `datetime_tool.py` to avoid integer truncation before multiplication
2026-04-17 14:19:40 +08:00
山程漫悟
e3d0602850 Merge pull request #920 from wanxunyang/feat/quota-check-decorator
feat(tenant): add public subscription plan list endpoint and enhance plan information
2026-04-17 11:47:34 +08:00
wxy
696b2d2417 fix(knowledge_service): 修正知识创建时模型类型过滤条件
移除IMAGE类型过滤,仅保留CHAT类型,确保只筛选出支持视觉能力的聊天模型
2026-04-17 11:38:45 +08:00
wxy
a5613314b8 refactor(agent): 将重置模型参数接口改为获取默认参数
移除不再使用的重置模型参数功能,将POST接口改为GET接口以获取默认参数
2026-04-17 11:34:11 +08:00
wxy
26a3d8a41b refactor(agent): refactor Agent model parameters reset logic and add environment variable support
Split reset_agent_config into two independent methods for getting and resetting model parameters
Add functionality to read quota configuration from environment variables to the default free tier
2026-04-17 11:00:22 +08:00
Ke Sun
2380cd55ef Merge pull request #918 from SuanmoSuanyangTechnology/fix/extract-metadata
refactor(memory): switch metadata extraction from full-replace to inc…
2026-04-17 10:58:51 +08:00
wxy
a105df33ab Merge remote-tracking branch 'upstream/develop' into feat/quota-check-decorator 2026-04-17 10:38:24 +08:00
Eternity
749cf79581 refactor(memory): consolidate memory search services and update model client handling
- Consolidate memory search services by removing separate content_search.py and perceptual_search.py
- Update model client handling in base_pipeline.py to use ModelApiKeyService for LLM client initialization
- Add new prompt files and modify existing services to support consolidated search architecture
- Refactor memory read pipeline and related services to use updated model client approach
2026-04-17 10:35:45 +08:00
miao
0dd8cc5d43 Merge remote-tracking branch 'origin/develop' into feat/enduser-info-apikey 2026-04-17 10:21:26 +08:00
wxy
f883c1469d feat(quota management): add end-user quota check for shared conversations
fix(default free plan): adjust free plan quota limits

feat(application service): add functionality to reset Agent model parameters to default values
2026-04-16 19:35:52 +08:00
miao
ddfd81259a feat(memory-config): Add V1 memory config management API endpoints
-Add full CRUD endpoints for memory config via API Key auth (/v1/memory_config)
-Add V1 request schemas: ConfigCreateRequest, ConfigUpdateRequest, ConfigUpdateExtractedRequest, ConfigUpdateForgettingRequest
-Add config-workspace ownership verification
-Add scenes/simple, read_all_config, read_config_extracted query endpoints
-Add create_config, update_config, update_config_extracted, update_config_forgetting, delete_config mutation endpoints
-Reuse management-side controllers with pre-validation ownership checks
2026-04-16 19:05:24 +08:00
wxy
915cb54f21 feat(tenant): add public subscription plan list endpoint and enhance plan information
Add a public subscription plan list endpoint that can be accessed without authentication. Enhance the returned subscription plan information fields, including multi-language support and default free plan fallback logic. Additionally, implement automatic model binding for the knowledge base service.
2026-04-16 17:54:50 +08:00
Timebomb2018
e1f8ad871b refactor(model): replace qwen-vl-plus-latest with json_output capability in dashscope_models.yaml 2026-04-16 17:47:47 +08:00
Timebomb2018
ccdf7ae81d refactor(model): replace VolcanoChatOpenAI with CompatibleChatOpenAI for unified omni model support 2026-04-16 17:40:30 +08:00
lanceyq
643f69bb90 refactor(memory): tighten metadata field types and clean up descriptions
- Use Literal['set', 'remove'] for MetadataFieldChange.action instead of str
- Simplify field_path description to reflect current schema
- Remove redundant isinstance check in extract_user_metadata_task
2026-04-16 17:29:00 +08:00
lanceyq
73fbc19747 refactor(memory): switch metadata extraction from full-replace to incremental changes
- Replace UserMetadata full-object overwrite with incremental MetadataFieldChange
  operations (set/remove per field path)
- Convert profile.role and profile.domain from scalar strings to lists
- Remove UserMetadataBehavioralHints and knowledge_tags fields
- Update Jinja2 prompt to instruct LLM to output incremental changes
- Update extract_user_metadata_task to apply changes via deep-copy and
  per-field mutation for proper SQLAlchemy change detection
- Minor lint: remove unnecessary f-string prefixes in tasks.py
2026-04-16 17:14:30 +08:00