Skip to content

Commit

Permalink
Merge branch 'refs/heads/feat/knowledge-admin-role' into deploy/dev
Browse files Browse the repository at this point in the history
* refs/heads/feat/knowledge-admin-role: (26 commits)
  fix: do not remove (#5682)
  Feature/add qwen llm (#5659)
  Fix docker command (#5681)
  feature: Add presence_penalty and frequency_penalty parameters to the … (#5637)
  Feat/fix ops trace (#5672)
  feat: xxo enhancement. (#5671)
  chore: rearrange python dependencies in groups (#5603)
  chore: delete unused resource (#5667)
  feat: get datasets when permission is partial_members
  feat: update migrate file
  feat: add account is_non_owner_role
  add role
  feat: get dataset info add partial_member_list
  feat: update field name
  feat: add tenant account role DATASET_OPERATOR
  feat: add create and get part_users_list api
  feat: add dataset permission service
  feat: add table dataset_permissions
  feat: add dataset_operator_enabled env
  feat: add features dataset_operator_enabled
  ...

# Conflicts:
#	api/core/ops/ops_trace_manager.py
#	api/tasks/ops_trace_task.py
  • Loading branch information
ZhouhaoJiang committed Jun 28, 2024
2 parents 96d250b + 2ccb4e0 commit 463a943
Show file tree
Hide file tree
Showing 53 changed files with 1,086 additions and 377 deletions.
3 changes: 0 additions & 3 deletions ArrowUturnLeft.svg

This file was deleted.

2 changes: 1 addition & 1 deletion api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

```bash
cd ../docker
docker-compose -f docker-compose.middleware.yaml -p dify up -d
docker compose -f docker-compose.middleware.yaml -p dify up -d
cd ../api
```

Expand Down
46 changes: 41 additions & 5 deletions api/controllers/console/datasets/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from libs.login import login_required
from models.dataset import Dataset, Document, DocumentSegment
from models.model import ApiToken, UploadFile
from services.dataset_service import DatasetService, DocumentService
from services.dataset_service import DatasetPermissionService, DatasetService, DocumentService


def _validate_name(name):
Expand Down Expand Up @@ -163,6 +163,11 @@ def get(self, dataset_id):
data['embedding_available'] = False
else:
data['embedding_available'] = True

if data.get('permission') == 'partial_members':
part_users_list = DatasetPermissionService.get_dataset_partial_member_list(dataset_id_str)
data.update({'partial_member_list': part_users_list})

return data, 200

@setup_required
Expand All @@ -188,16 +193,18 @@ def patch(self, dataset_id):
nullable=True,
help='Invalid indexing technique.')
parser.add_argument('permission', type=str, location='json', choices=(
'only_me', 'all_team_members'), help='Invalid permission.')
'only_me', 'all_team_members', 'partial_members'), help='Invalid permission.'
)
parser.add_argument('embedding_model', type=str,
location='json', help='Invalid embedding model.')
parser.add_argument('embedding_model_provider', type=str,
location='json', help='Invalid embedding model provider.')
parser.add_argument('retrieval_model', type=dict, location='json', help='Invalid retrieval model.')
parser.add_argument('partial_member_list', type=list, location='json', help='Invalid parent user list.')
args = parser.parse_args()

data = request.get_json()
# The role of the current user in the ta table must be admin, owner, or editor
if not current_user.is_editor:
if not current_user.is_dataset_editing_role:
raise Forbidden()

dataset = DatasetService.update_dataset(
Expand All @@ -206,7 +213,14 @@ def patch(self, dataset_id):
if dataset is None:
raise NotFound("Dataset not found.")

return marshal(dataset, dataset_detail_fields), 200
result_data = marshal(dataset, dataset_detail_fields)

if data.get('partial_member_list') and data.get('permission') == 'partial_members':
DatasetPermissionService.update_partial_member_list(dataset_id_str, data.get('partial_member_list'))
part_users_list = DatasetPermissionService.get_dataset_partial_member_list(dataset_id_str)
result_data.update({'partial_member_list': part_users_list})

return result_data, 200

@setup_required
@login_required
Expand Down Expand Up @@ -560,6 +574,27 @@ def get(self, dataset_id):
}, 200


class DatasetPermissionUserListApi(Resource):
@setup_required
@login_required
@account_initialization_required
def get(self, dataset_id):
dataset_id_str = str(dataset_id)
dataset = DatasetService.get_dataset(dataset_id_str)
if dataset is None:
raise NotFound("Dataset not found.")
try:
DatasetService.check_dataset_permission(dataset, current_user)
except services.errors.account.NoPermissionError as e:
raise Forbidden(str(e))

partial_members_list = DatasetPermissionService.get_dataset_partial_member_list(dataset_id_str)

return {
'data': partial_members_list,
}, 200


api.add_resource(DatasetListApi, '/datasets')
api.add_resource(DatasetApi, '/datasets/<uuid:dataset_id>')
api.add_resource(DatasetQueryApi, '/datasets/<uuid:dataset_id>/queries')
Expand All @@ -572,3 +607,4 @@ def get(self, dataset_id):
api.add_resource(DatasetApiBaseUrlApi, '/datasets/api-base-info')
api.add_resource(DatasetRetrievalSettingApi, '/datasets/retrieval-setting')
api.add_resource(DatasetRetrievalSettingMockApi, '/datasets/retrieval-setting/<string:vector_type>')
api.add_resource(DatasetPermissionUserListApi, '/datasets/<uuid:dataset_id>/permission-part-users')
13 changes: 13 additions & 0 deletions api/controllers/console/workspace/members.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,20 @@ def put(self, member_id):
return {'result': 'success'}


class DatasetOperatorMemberListApi(Resource):
"""List all members of current tenant."""

@setup_required
@login_required
@account_initialization_required
@marshal_with(account_with_role_list_fields)
def get(self):
members = TenantService.get_dataset_operator_members(current_user.current_tenant)
return {'result': 'success', 'accounts': members}, 200


api.add_resource(MemberListApi, '/workspaces/current/members')
api.add_resource(MemberInviteEmailApi, '/workspaces/current/members/invite-email')
api.add_resource(MemberCancelInviteApi, '/workspaces/current/members/<uuid:member_id>')
api.add_resource(MemberUpdateRoleApi, '/workspaces/current/members/<uuid:member_id>/update-role')
api.add_resource(DatasetOperatorMemberListApi, '/workspaces/current/dataset-operators')
81 changes: 81 additions & 0 deletions api/core/model_runtime/model_providers/tongyi/llm/qwen-long.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
model: qwen-long
label:
en_US: qwen-long
model_type: llm
features:
- multi-tool-call
- agent-thought
- stream-tool-call
model_properties:
mode: chat
context_size: 10000000
parameter_rules:
- name: temperature
use_template: temperature
type: float
default: 0.3
min: 0.0
max: 2.0
help:
zh_Hans: 用于控制随机性和多样性的程度。具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。
en_US: Used to control the degree of randomness and diversity. Specifically, the temperature value controls the degree to which the probability distribution of each candidate word is smoothed when generating text. A higher temperature value will reduce the peak value of the probability distribution, allowing more low-probability words to be selected, and the generated results will be more diverse; while a lower temperature value will enhance the peak value of the probability distribution, making it easier for high-probability words to be selected. , the generated results are more certain.
- name: max_tokens
use_template: max_tokens
type: int
default: 2000
min: 1
max: 2000
help:
zh_Hans: 用于指定模型在生成内容时token的最大数量,它定义了生成的上限,但不保证每次都会生成到这个数量。
en_US: It is used to specify the maximum number of tokens when the model generates content. It defines the upper limit of generation, but does not guarantee that this number will be generated every time.
- name: top_p
use_template: top_p
type: float
default: 0.8
min: 0.1
max: 0.9
help:
zh_Hans: 生成过程中核采样方法概率阈值,例如,取值为0.8时,仅保留概率加起来大于等于0.8的最可能token的最小集合作为候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的确定性越高。
en_US: The probability threshold of the kernel sampling method during the generation process. For example, when the value is 0.8, only the smallest set of the most likely tokens with a sum of probabilities greater than or equal to 0.8 is retained as the candidate set. The value range is (0,1.0). The larger the value, the higher the randomness generated; the lower the value, the higher the certainty generated.
- name: top_k
type: int
min: 0
max: 99
label:
zh_Hans: 取样数量
en_US: Top k
help:
zh_Hans: 生成时,采样候选集的大小。例如,取值为50时,仅将单次生成中得分最高的50个token组成随机采样的候选集。取值越大,生成的随机性越高;取值越小,生成的确定性越高。
en_US: The size of the sample candidate set when generated. For example, when the value is 50, only the 50 highest-scoring tokens in a single generation form a randomly sampled candidate set. The larger the value, the higher the randomness generated; the smaller the value, the higher the certainty generated.
- name: seed
required: false
type: int
default: 1234
label:
zh_Hans: 随机种子
en_US: Random seed
help:
zh_Hans: 生成时使用的随机数种子,用户控制模型生成内容的随机性。支持无符号64位整数,默认值为 1234。在使用seed时,模型将尽可能生成相同或相似的结果,但目前不保证每次生成的结果完全相同。
en_US: The random number seed used when generating, the user controls the randomness of the content generated by the model. Supports unsigned 64-bit integers, default value is 1234. When using seed, the model will try its best to generate the same or similar results, but there is currently no guarantee that the results will be exactly the same every time.
- name: repetition_penalty
required: false
type: float
default: 1.1
label:
en_US: Repetition penalty
help:
zh_Hans: 用于控制模型生成时的重复度。提高repetition_penalty时可以降低模型生成的重复度。1.0表示不做惩罚。
en_US: Used to control the repeatability when generating models. Increasing repetition_penalty can reduce the duplication of model generation. 1.0 means no punishment.
- name: enable_search
type: boolean
default: false
help:
zh_Hans: 模型内置了互联网搜索服务,该参数控制模型在生成文本时是否参考使用互联网搜索结果。启用互联网搜索,模型会将搜索结果作为文本生成过程中的参考信息,但模型会基于其内部逻辑“自行判断”是否使用互联网搜索结果。
en_US: The model has a built-in Internet search service. This parameter controls whether the model refers to Internet search results when generating text. When Internet search is enabled, the model will use the search results as reference information in the text generation process, but the model will "judge" whether to use Internet search results based on its internal logic.
- name: response_format
use_template: response_format
pricing:
input: '0.0005'
output: '0.002'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.12'
input: '0.04'
output: '0.12'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
model: qwen-max-0428
label:
en_US: qwen-max-0428
model_type: llm
features:
- multi-tool-call
- agent-thought
- stream-tool-call
model_properties:
mode: chat
context_size: 8192
parameter_rules:
- name: temperature
use_template: temperature
type: float
default: 0.3
min: 0.0
max: 2.0
help:
zh_Hans: 用于控制随机性和多样性的程度。具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。
en_US: Used to control the degree of randomness and diversity. Specifically, the temperature value controls the degree to which the probability distribution of each candidate word is smoothed when generating text. A higher temperature value will reduce the peak value of the probability distribution, allowing more low-probability words to be selected, and the generated results will be more diverse; while a lower temperature value will enhance the peak value of the probability distribution, making it easier for high-probability words to be selected. , the generated results are more certain.
- name: max_tokens
use_template: max_tokens
type: int
default: 2000
min: 1
max: 2000
help:
zh_Hans: 用于指定模型在生成内容时token的最大数量,它定义了生成的上限,但不保证每次都会生成到这个数量。
en_US: It is used to specify the maximum number of tokens when the model generates content. It defines the upper limit of generation, but does not guarantee that this number will be generated every time.
- name: top_p
use_template: top_p
type: float
default: 0.8
min: 0.1
max: 0.9
help:
zh_Hans: 生成过程中核采样方法概率阈值,例如,取值为0.8时,仅保留概率加起来大于等于0.8的最可能token的最小集合作为候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的确定性越高。
en_US: The probability threshold of the kernel sampling method during the generation process. For example, when the value is 0.8, only the smallest set of the most likely tokens with a sum of probabilities greater than or equal to 0.8 is retained as the candidate set. The value range is (0,1.0). The larger the value, the higher the randomness generated; the lower the value, the higher the certainty generated.
- name: top_k
type: int
min: 0
max: 99
label:
zh_Hans: 取样数量
en_US: Top k
help:
zh_Hans: 生成时,采样候选集的大小。例如,取值为50时,仅将单次生成中得分最高的50个token组成随机采样的候选集。取值越大,生成的随机性越高;取值越小,生成的确定性越高。
en_US: The size of the sample candidate set when generated. For example, when the value is 50, only the 50 highest-scoring tokens in a single generation form a randomly sampled candidate set. The larger the value, the higher the randomness generated; the smaller the value, the higher the certainty generated.
- name: seed
required: false
type: int
default: 1234
label:
zh_Hans: 随机种子
en_US: Random seed
help:
zh_Hans: 生成时使用的随机数种子,用户控制模型生成内容的随机性。支持无符号64位整数,默认值为 1234。在使用seed时,模型将尽可能生成相同或相似的结果,但目前不保证每次生成的结果完全相同。
en_US: The random number seed used when generating, the user controls the randomness of the content generated by the model. Supports unsigned 64-bit integers, default value is 1234. When using seed, the model will try its best to generate the same or similar results, but there is currently no guarantee that the results will be exactly the same every time.
- name: repetition_penalty
required: false
type: float
default: 1.1
label:
en_US: Repetition penalty
help:
zh_Hans: 用于控制模型生成时的重复度。提高repetition_penalty时可以降低模型生成的重复度。1.0表示不做惩罚。
en_US: Used to control the repeatability when generating models. Increasing repetition_penalty can reduce the duplication of model generation. 1.0 means no punishment.
- name: enable_search
type: boolean
default: false
help:
zh_Hans: 模型内置了互联网搜索服务,该参数控制模型在生成文本时是否参考使用互联网搜索结果。启用互联网搜索,模型会将搜索结果作为文本生成过程中的参考信息,但模型会基于其内部逻辑“自行判断”是否使用互联网搜索结果。
en_US: The model has a built-in Internet search service. This parameter controls whether the model refers to Internet search results when generating text. When Internet search is enabled, the model will use the search results as reference information in the text generation process, but the model will "judge" whether to use Internet search results based on its internal logic.
- name: response_format
use_template: response_format
pricing:
input: '0.04'
output: '0.12'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.12'
input: '0.04'
output: '0.12'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.12'
input: '0.04'
output: '0.12'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.12'
input: '0.04'
output: '0.12'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.02'
output: '0.02'
input: '0.004'
output: '0.012'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.02'
output: '0.02'
input: '0.004'
output: '0.012'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.008'
output: '0.008'
input: '0.002'
output: '0.006'
unit: '0.001'
currency: RMB
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ parameter_rules:
- name: response_format
use_template: response_format
pricing:
input: '0.008'
output: '0.008'
input: '0.002'
output: '0.006'
unit: '0.001'
currency: RMB
Loading

0 comments on commit 463a943

Please sign in to comment.