feat(improve-api-endpoints): Added Datasets and Annotation APIs (#12237)

This commit is contained in:
Jasonfish
2025-04-07 10:36:58 +08:00
committed by GitHub
parent b146aaaeb7
commit fd443941a2
11 changed files with 2093 additions and 4 deletions

View File

@@ -439,6 +439,195 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi
<hr className='ml-0 mr-0' />
<Heading
url='/datasets/{dataset_id}'
method='GET'
title='Get knowledge base details by knowledge base ID'
name='#view_dataset'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='dataset_id' type='string' key='dataset_id'>
Knowledge Base ID
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/datasets/{dataset_id}"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"id": "eaedb485-95ac-4ffd-ab1e-18da6d676a2f",
"name": "Test Knowledge Base",
"description": "",
"provider": "vendor",
"permission": "only_me",
"data_source_type": null,
"indexing_technique": null,
"app_count": 0,
"document_count": 0,
"word_count": 0,
"created_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"created_at": 1735620612,
"updated_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"updated_at": 1735620612,
"embedding_model": null,
"embedding_model_provider": null,
"embedding_available": true,
"retrieval_model_dict": {
"search_method": "semantic_search",
"reranking_enable": false,
"reranking_mode": null,
"reranking_model": {
"reranking_provider_name": "",
"reranking_model_name": ""
},
"weights": null,
"top_k": 2,
"score_threshold_enabled": false,
"score_threshold": null
},
"tags": [],
"doc_form": null,
"external_knowledge_info": {
"external_knowledge_id": null,
"external_knowledge_api_id": null,
"external_knowledge_api_name": null,
"external_knowledge_api_endpoint": null
},
"external_retrieval_model": {
"top_k": 2,
"score_threshold": 0.0,
"score_threshold_enabled": null
}
}
```
</CodeGroup>
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Heading
url='/datasets/{dataset_id}'
method='POST'
title='Update knowledge base'
name='#update_dataset'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='dataset_id' type='string' key='dataset_id'>
Knowledge Base ID
</Property>
<Property name='indexing_technique' type='string' key='indexing_technique'>
Index technique (optional)
- <code>high_quality</code> High quality
- <code>economy</code> Economy
</Property>
<Property name='permission' type='string' key='permission'>
Permission
- <code>only_me</code> Only me
- <code>all_team_members</code> All team members
- <code>partial_members</code> Partial members
</Property>
<Property name='embedding_model_provider' type='string' key='embedding_model_provider'>
Specified embedding model provider, must be set up in the system first, corresponding to the provider field(Optional)
</Property>
<Property name='embedding_model' type='string' key='embedding_model'>
Specified embedding model, corresponding to the model field(Optional)
</Property>
<Property name='retrieval_model' type='string' key='retrieval_model'>
Specified retrieval model, corresponding to the model field(Optional)
</Property>
<Property name='partial_member_list' type='array' key='partial_member_list'>
Partial member list(Optional)
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="POST"
label="/datasets/{dataset_id}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"name": "Test Knowledge Base", "indexing_technique": "high_quality", "permission": "only_me", "embedding_model_provider": "zhipuai", "embedding_model": "embedding-3", "retrieval_model": "", "partial_member_list": []}' `}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "Test Knowledge Base", "indexing_technique": "high_quality", "permission": "only_me",\
"embedding_model_provider": "zhipuai", "embedding_model": "embedding-3", "retrieval_model": "", "partial_member_list": []}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"id": "eaedb485-95ac-4ffd-ab1e-18da6d676a2f",
"name": "Test Knowledge Base",
"description": "",
"provider": "vendor",
"permission": "only_me",
"data_source_type": null,
"indexing_technique": "high_quality",
"app_count": 0,
"document_count": 0,
"word_count": 0,
"created_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"created_at": 1735620612,
"updated_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"updated_at": 1735622679,
"embedding_model": "embedding-3",
"embedding_model_provider": "zhipuai",
"embedding_available": null,
"retrieval_model_dict": {
"search_method": "semantic_search",
"reranking_enable": false,
"reranking_mode": null,
"reranking_model": {
"reranking_provider_name": "",
"reranking_model_name": ""
},
"weights": null,
"top_k": 2,
"score_threshold_enabled": false,
"score_threshold": null
},
"tags": [],
"doc_form": null,
"external_knowledge_info": {
"external_knowledge_id": null,
"external_knowledge_api_id": null,
"external_knowledge_api_name": null,
"external_knowledge_api_endpoint": null
},
"external_retrieval_model": {
"top_k": 2,
"score_threshold": 0.0,
"score_threshold_enabled": null
},
"partial_member_list": []
}
```
</CodeGroup>
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Heading
url='/datasets/{dataset_id}'
method='DELETE'
@@ -1870,6 +2059,110 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Heading
url='/workspaces/current/models/model-types/text-embedding'
method='GET'
title='Get available embedding models'
name='#model_type_list'
/>
<Row>
<Col>
### Query
<Properties>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/datasets/{dataset_id}"
targetCode={`curl --location --location --request GET '${props.apiBaseUrl}/workspaces/current/models/model-types/text-embedding' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' `}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/workspaces/current/models/model-types/text-embedding' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"data": [
{
"provider": "zhipuai",
"label": {
"zh_Hans": "智谱 AI",
"en_US": "ZHIPU AI"
},
"icon_small": {
"zh_Hans": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_small/zh_Hans",
"en_US": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_small/en_US"
},
"icon_large": {
"zh_Hans": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_large/zh_Hans",
"en_US": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_large/en_US"
},
"status": "active",
"models": [
{
"model": "embedding-3",
"label": {
"zh_Hans": "embedding-3",
"en_US": "embedding-3"
},
"model_type": "text-embedding",
"features": null,
"fetch_from": "predefined-model",
"model_properties": {
"context_size": 8192
},
"deprecated": false,
"status": "active",
"load_balancing_enabled": false
},
{
"model": "embedding-2",
"label": {
"zh_Hans": "embedding-2",
"en_US": "embedding-2"
},
"model_type": "text-embedding",
"features": null,
"fetch_from": "predefined-model",
"model_properties": {
"context_size": 8192
},
"deprecated": false,
"status": "active",
"load_balancing_enabled": false
},
{
"model": "text_embedding",
"label": {
"zh_Hans": "text_embedding",
"en_US": "text_embedding"
},
"model_type": "text-embedding",
"features": null,
"fetch_from": "predefined-model",
"model_properties": {
"context_size": 512
},
"deprecated": false,
"status": "active",
"load_balancing_enabled": false
}
]
}
]
}
```
</CodeGroup>
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Row>

View File

@@ -49,7 +49,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi
</Property>
<Property name='indexing_technique' type='string' key='indexing_technique'>
索引方式
- <code>high_quality</code> 高质量:使用 embedding 模型进行嵌入,构建为向量数据库索引
- <code>high_quality</code> 高质量:使用
ding 模型进行嵌入,构建为向量数据库索引
- <code>economy</code> 经济:使用 keyword table index 的倒排索引进行构建
</Property>
<Property name='doc_form' type='string' key='doc_form'>
@@ -439,6 +440,195 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi
<hr className='ml-0 mr-0' />
<Heading
url='/datasets/{dataset_id}'
method='GET'
title='查看知识库详情'
name='#view_dataset'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='dataset_id' type='string' key='dataset_id'>
知识库 ID
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/datasets/{dataset_id}"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/datasets/{dataset_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"id": "eaedb485-95ac-4ffd-ab1e-18da6d676a2f",
"name": "Test Knowledge Base",
"description": "",
"provider": "vendor",
"permission": "only_me",
"data_source_type": null,
"indexing_technique": null,
"app_count": 0,
"document_count": 0,
"word_count": 0,
"created_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"created_at": 1735620612,
"updated_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"updated_at": 1735620612,
"embedding_model": null,
"embedding_model_provider": null,
"embedding_available": true,
"retrieval_model_dict": {
"search_method": "semantic_search",
"reranking_enable": false,
"reranking_mode": null,
"reranking_model": {
"reranking_provider_name": "",
"reranking_model_name": ""
},
"weights": null,
"top_k": 2,
"score_threshold_enabled": false,
"score_threshold": null
},
"tags": [],
"doc_form": null,
"external_knowledge_info": {
"external_knowledge_id": null,
"external_knowledge_api_id": null,
"external_knowledge_api_name": null,
"external_knowledge_api_endpoint": null
},
"external_retrieval_model": {
"top_k": 2,
"score_threshold": 0.0,
"score_threshold_enabled": null
}
}
```
</CodeGroup>
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Heading
url='/datasets/{dataset_id}'
method='POST'
title='修改知识库详情'
name='#update_dataset'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='dataset_id' type='string' key='dataset_id'>
知识库 ID
</Property>
<Property name='indexing_technique' type='string' key='indexing_technique'>
索引模式(选填,建议填写)
- <code>high_quality</code> 高质量
- <code>economy</code> 经济
</Property>
<Property name='permission' type='string' key='permission'>
权限(选填,默认 only_me
- <code>only_me</code> 仅自己
- <code>all_team_members</code> 所有团队成员
- <code>partial_members</code> 部分团队成员
</Property>
<Property name='embedding_model_provider' type='string' key='embedding_model_provider'>
嵌入模型提供商(选填), 必须先在系统内设定好接入的模型对应的是provider字段
</Property>
<Property name='embedding_model' type='string' key='embedding_model'>
嵌入模型(选填)
</Property>
<Property name='retrieval_model' type='string' key='retrieval_model'>
检索模型(选填)
</Property>
<Property name='partial_member_list' type='array' key='partial_member_list'>
部分团队成员 ID 列表(选填)
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="POST"
label="/datasets/{dataset_id}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"name": "Test Knowledge Base", "indexing_technique": "high_quality", "permission": "only_me", "embedding_model_provider": "zhipuai", "embedding_model": "embedding-3", "retrieval_model": "", "partial_member_list": []}' `}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "Test Knowledge Base", "indexing_technique": "high_quality", "permission": "only_me",\
"embedding_model_provider": "zhipuai", "embedding_model": "embedding-3", "retrieval_model": "", "partial_member_list": []}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"id": "eaedb485-95ac-4ffd-ab1e-18da6d676a2f",
"name": "Test Knowledge Base",
"description": "",
"provider": "vendor",
"permission": "only_me",
"data_source_type": null,
"indexing_technique": "high_quality",
"app_count": 0,
"document_count": 0,
"word_count": 0,
"created_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"created_at": 1735620612,
"updated_by": "e99a1635-f725-4951-a99a-1daaaa76cfc6",
"updated_at": 1735622679,
"embedding_model": "embedding-3",
"embedding_model_provider": "zhipuai",
"embedding_available": null,
"retrieval_model_dict": {
"search_method": "semantic_search",
"reranking_enable": false,
"reranking_mode": null,
"reranking_model": {
"reranking_provider_name": "",
"reranking_model_name": ""
},
"weights": null,
"top_k": 2,
"score_threshold_enabled": false,
"score_threshold": null
},
"tags": [],
"doc_form": null,
"external_knowledge_info": {
"external_knowledge_id": null,
"external_knowledge_api_id": null,
"external_knowledge_api_name": null,
"external_knowledge_api_endpoint": null
},
"external_retrieval_model": {
"top_k": 2,
"score_threshold": 0.0,
"score_threshold_enabled": null
},
"partial_member_list": []
}
```
</CodeGroup>
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Heading
url='/datasets/{dataset_id}'
method='DELETE'
@@ -1905,6 +2095,110 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Heading
url='/workspaces/current/models/model-types/text-embedding'
method='GET'
title='获取嵌入模型列表'
name='#model_type_list'
/>
<Row>
<Col>
### Query
<Properties>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/datasets/{dataset_id}"
targetCode={`curl --location --location --request GET '${props.apiBaseUrl}/workspaces/current/models/model-types/text-embedding' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' `}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/workspaces/current/models/model-types/text-embedding' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"data": [
{
"provider": "zhipuai",
"label": {
"zh_Hans": "智谱 AI",
"en_US": "ZHIPU AI"
},
"icon_small": {
"zh_Hans": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_small/zh_Hans",
"en_US": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_small/en_US"
},
"icon_large": {
"zh_Hans": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_large/zh_Hans",
"en_US": "http://127.0.0.1:5001/console/api/workspaces/current/model-providers/zhipuai/icon_large/en_US"
},
"status": "active",
"models": [
{
"model": "embedding-3",
"label": {
"zh_Hans": "embedding-3",
"en_US": "embedding-3"
},
"model_type": "text-embedding",
"features": null,
"fetch_from": "predefined-model",
"model_properties": {
"context_size": 8192
},
"deprecated": false,
"status": "active",
"load_balancing_enabled": false
},
{
"model": "embedding-2",
"label": {
"zh_Hans": "embedding-2",
"en_US": "embedding-2"
},
"model_type": "text-embedding",
"features": null,
"fetch_from": "predefined-model",
"model_properties": {
"context_size": 8192
},
"deprecated": false,
"status": "active",
"load_balancing_enabled": false
},
{
"model": "text_embedding",
"label": {
"zh_Hans": "text_embedding",
"en_US": "text_embedding"
},
"model_type": "text-embedding",
"features": null,
"fetch_from": "predefined-model",
"model_properties": {
"context_size": 512
},
"deprecated": false,
"status": "active",
"load_balancing_enabled": false
}
]
}
]
}
```
</CodeGroup>
</Col>
</Row>
<hr className='ml-0 mr-0' />
<Row>

View File

@@ -548,3 +548,304 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='GET'
title='获取标注列表'
name='#annotation_list'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='page' type='string' key='page'>
页码
</Property>
<Property name='limit' type='string' key='limit'>
每页数量
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"data": [
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
],
"has_more": false,
"limit": 20,
"total": 1,
"page": 1
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='POST'
title='创建标注'
name='#create_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='question' type='string' key='question'>
问题
</Property>
<Property name='answer' type='string' key='answer'>
答案内容
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotations"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='PUT'
title='更新标注'
name='#update_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
标注 ID
</Property>
<Property name='question' type='string' key='question'>
问题
</Property>
<Property name='answer' type='string' key='answer'>
答案内容
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='DELETE'
title='删除标注'
name='#delete_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
标注 ID
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`}
>
```bash {{ title: 'cURL' }}
curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{"result": "success"}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}'
method='POST'
title='标注回复初始设置'
name='#initial_annotation_reply_settings'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
动作,只能是 'enable' 或 'disable'
</Property>
<Property name='embedding_model_provider' type='string' key='embedding_model_provider'>
指定的嵌入模型提供商, 必须先在系统内设定好接入的模型对应的是provider字段
</Property>
<Property name='embedding_model' type='string' key='embedding_model'>
指定的嵌入模型对应的是model字段
</Property>
<Property name='score_threshold' type='number' key='score_threshold'>
相似度阈值,当相似度大于该阈值时,系统会自动回复,否则不回复
</Property>
</Properties>
</Col>
<Col sticky>
嵌入模型的提供商和模型名称可以通过以下接口获取v1/workspaces/current/models/model-types/text-embedding 具体见:通过 API 维护知识库。 使用的Authorization是Dataset的API Token。
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotation-reply/{action}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotation-reply/{action}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"score_threshold": 0.9, "embedding_provider_name": "zhipu", "embedding_model_name": "embedding_3"}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST 'https://api.dify.ai/v1/apps/annotation-reply/{action}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"score_threshold": 0.9,
"embedding_provider_name": "zhipu",
"embedding_model_name": "embedding_3"
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting"
}
```
该接口是异步执行所以会返回一个job_id通过查询job状态接口可以获取到最终的执行结果。
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}/status/{job_id}'
method='GET'
title='查询标注回复初始设置任务状态'
name='#initial_annotation_reply_settings_task_status'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
动作,只能是 'enable' 或 'disable',并且必须和标注回复初始设置接口的动作一致
</Property>
<Property name='job_id' type='string' key='job_id'>
任务 ID从标注回复初始设置接口返回的 job_id
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting",
"error_msg": ""
}
```
</CodeGroup>
</Col>
</Row>

View File

@@ -1137,3 +1137,304 @@ Chat applications support session persistence, allowing previous chat history to
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='GET'
title='Get Annotation List'
name='#annotation_list'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='page' type='string' key='page'>
Page number
</Property>
<Property name='limit' type='string' key='limit'>
Number of items returned, default 20, range 1-100
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"data": [
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
],
"has_more": false,
"limit": 20,
"total": 1,
"page": 1
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='POST'
title='Create Annotation'
name='#create_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='question' type='string' key='question'>
Question
</Property>
<Property name='answer' type='string' key='answer'>
Answer
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotations"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='PUT'
title='Update Annotation'
name='#update_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
Annotation ID
</Property>
<Property name='question' type='string' key='question'>
Question
</Property>
<Property name='answer' type='string' key='answer'>
Answer
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='DELETE'
title='Delete Annotation'
name='#delete_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
Annotation ID
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`}
>
```bash {{ title: 'cURL' }}
curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{"result": "success"}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}'
method='POST'
title='Initial Annotation Reply Settings'
name='#initial_annotation_reply_settings'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
Action, can only be 'enable' or 'disable'
</Property>
<Property name='embedding_model_provider' type='string' key='embedding_model_provider'>
Specified embedding model provider, must be set up in the system first, corresponding to the provider field(Optional)
</Property>
<Property name='embedding_model' type='string' key='embedding_model'>
Specified embedding model, corresponding to the model field(Optional)
</Property>
<Property name='score_threshold' type='number' key='score_threshold'>
The similarity threshold for matching annotated replies. Only annotations with scores above this threshold will be recalled.
</Property>
</Properties>
</Col>
<Col sticky>
The provider and model name of the embedding model can be obtained through the following interface: v1/workspaces/current/models/model-types/text-embedding. For specific instructions, see: Maintain Knowledge Base via API. The Authorization used is the Dataset API Token.
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotation-reply/{action}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotation-reply/{action}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"score_threshold": 0.9, "embedding_provider_name": "zhipu", "embedding_model_name": "embedding_3"}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST 'https://api.dify.ai/v1/apps/annotation-reply/{action}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"score_threshold": 0.9,
"embedding_provider_name": "zhipu",
"embedding_model_name": "embedding_3"
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting"
}
```
This interface is executed asynchronously, so it will return a job_id. You can get the final execution result by querying the job status interface.
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}/status/{job_id}'
method='GET'
title='Query Initial Annotation Reply Settings Task Status'
name='#initial_annotation_reply_settings_task_status'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
Action, can only be 'enable' or 'disable', must be the same as the action in the initial annotation reply settings interface
</Property>
<Property name='job_id' type='string' key='job_id'>
Job ID, obtained from the initial annotation reply settings interface
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting",
"error_msg": ""
}
```
</CodeGroup>
</Col>
</Row>

View File

@@ -1159,3 +1159,306 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
</CodeGroup>
</Col>
</Row>
---
---
<Heading
url='/apps/annotations'
method='GET'
title='获取标注列表'
name='#annotation_list'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='page' type='string' key='page'>
页码
</Property>
<Property name='limit' type='string' key='limit'>
每页数量
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"data": [
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
],
"has_more": false,
"limit": 20,
"total": 1,
"page": 1
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='POST'
title='创建标注'
name='#create_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='question' type='string' key='question'>
问题
</Property>
<Property name='answer' type='string' key='answer'>
答案内容
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotations"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='PUT'
title='更新标注'
name='#update_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
标注 ID
</Property>
<Property name='question' type='string' key='question'>
问题
</Property>
<Property name='answer' type='string' key='answer'>
答案内容
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='DELETE'
title='删除标注'
name='#delete_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
标注 ID
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`}
>
```bash {{ title: 'cURL' }}
curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{"result": "success"}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}'
method='POST'
title='标注回复初始设置'
name='#initial_annotation_reply_settings'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
动作,只能是 'enable' 或 'disable'
</Property>
<Property name='embedding_model_provider' type='string' key='embedding_model_provider'>
指定的嵌入模型提供商, 必须先在系统内设定好接入的模型对应的是provider字段
</Property>
<Property name='embedding_model' type='string' key='embedding_model'>
指定的嵌入模型对应的是model字段
</Property>
<Property name='score_threshold' type='number' key='score_threshold'>
相似度阈值,当相似度大于该阈值时,系统会自动回复,否则不回复
</Property>
</Properties>
</Col>
<Col sticky>
嵌入模型的提供商和模型名称可以通过以下接口获取v1/workspaces/current/models/model-types/text-embedding 具体见:通过 API 维护知识库。 使用的Authorization是Dataset的API Token。
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotation-reply/{action}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotation-reply/{action}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"score_threshold": 0.9, "embedding_provider_name": "zhipu", "embedding_model_name": "embedding_3"}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST 'https://api.dify.ai/v1/apps/annotation-reply/{action}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"score_threshold": 0.9,
"embedding_provider_name": "zhipu",
"embedding_model_name": "embedding_3"
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting"
}
```
该接口是异步执行所以会返回一个job_id通过查询job状态接口可以获取到最终的执行结果。
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}/status/{job_id}'
method='GET'
title='查询标注回复初始设置任务状态'
name='#initial_annotation_reply_settings_task_status'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
动作,只能是 'enable' 或 'disable',并且必须和标注回复初始设置接口的动作一致
</Property>
<Property name='job_id' type='string' key='job_id'>
任务 ID从标注回复初始设置接口返回的 job_id
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting",
"error_msg": ""
}
```
</CodeGroup>
</Col>
</Row>

View File

@@ -1173,3 +1173,304 @@ Chat applications support session persistence, allowing previous chat history to
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='GET'
title='Get Annotation List'
name='#annotation_list'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='page' type='string' key='page'>
Page number
</Property>
<Property name='limit' type='string' key='limit'>
Number of items returned, default 20, range 1-100
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotations?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"data": [
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
],
"has_more": false,
"limit": 20,
"total": 1,
"page": 1
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations'
method='POST'
title='Create Annotation'
name='#create_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='question' type='string' key='question'>
Question
</Property>
<Property name='answer' type='string' key='answer'>
Answer
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotations"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='PUT'
title='Update Annotation'
name='#update_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
Annotation ID
</Property>
<Property name='question' type='string' key='question'>
Question
</Property>
<Property name='answer' type='string' key='answer'>
Answer
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"question": "What is your name?","answer": "I am Dify."}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"question": "What is your name?",
"answer": "I am Dify."
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
{
"id": "69d48372-ad81-4c75-9c46-2ce197b4d402",
"question": "What is your name?",
"answer": "I am Dify.",
"hit_count": 0,
"created_at": 1735625869
}
}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotations/{annotation_id}'
method='DELETE'
title='Delete Annotation'
name='#delete_annotation'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='annotation_id' type='string' key='annotation_id'>
Annotation ID
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="PUT"
label="/apps/annotations/{annotation_id}"
targetCode={`curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'`}
>
```bash {{ title: 'cURL' }}
curl --location --request DELETE '${props.apiBaseUrl}/apps/annotations/{annotation_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{"result": "success"}
```
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}'
method='POST'
title='Initial Annotation Reply Settings'
name='#initial_annotation_reply_settings'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
Action, can only be 'enable' or 'disable'
</Property>
<Property name='embedding_model_provider' type='string' key='embedding_model_provider'>
Specified embedding model provider, must be set up in the system first, corresponding to the provider field(Optional)
</Property>
<Property name='embedding_model' type='string' key='embedding_model'>
Specified embedding model, corresponding to the model field(Optional)
</Property>
<Property name='score_threshold' type='number' key='score_threshold'>
The similarity threshold for matching annotated replies. Only annotations with scores above this threshold will be recalled.
</Property>
</Properties>
</Col>
<Col sticky>
The provider and model name of the embedding model can be obtained through the following interface: v1/workspaces/current/models/model-types/text-embedding. For specific instructions, see: Maintain Knowledge Base via API. The Authorization used is the Dataset API Token.
<CodeGroup
title="Request"
tag="POST"
label="/apps/annotation-reply/{action}"
targetCode={`curl --location --request POST '${props.apiBaseUrl}/apps/annotation-reply/{action}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{"score_threshold": 0.9, "embedding_provider_name": "zhipu", "embedding_model_name": "embedding_3"}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request POST 'https://api.dify.ai/v1/apps/annotation-reply/{action}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"score_threshold": 0.9,
"embedding_provider_name": "zhipu",
"embedding_model_name": "embedding_3"
}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting"
}
```
This interface is executed asynchronously, so it will return a job_id. You can get the final execution result by querying the job status interface.
</CodeGroup>
</Col>
</Row>
---
<Heading
url='/apps/annotation-reply/{action}/status/{job_id}'
method='GET'
title='Query Initial Annotation Reply Settings Task Status'
name='#initial_annotation_reply_settings_task_status'
/>
<Row>
<Col>
### Query
<Properties>
<Property name='action' type='string' key='action'>
Action, can only be 'enable' or 'disable', must be the same as the action in the initial annotation reply settings interface
</Property>
<Property name='job_id' type='string' key='job_id'>
Job ID,
</Property>
</Properties>
</Col>
<Col sticky>
<CodeGroup
title="Request"
tag="GET"
label="/apps/annotations"
targetCode={`curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \\\n--header 'Authorization: Bearer {api_key}'`}
>
```bash {{ title: 'cURL' }}
curl --location --request GET '${props.apiBaseUrl}/apps/annotation-reply/{action}/status/{job_id}' \
--header 'Authorization: Bearer {api_key}'
```
</CodeGroup>
<CodeGroup title="Response">
```json {{ title: 'Response' }}
{
"job_id": "b15c8f68-1cf4-4877-bf21-ed7cf2011802",
"job_status": "waiting",
"error_msg": ""
}
```
</CodeGroup>
</Col>
</Row>