Skip to content

Commit b738fc0

Browse files
committed
Merge branch 'develop' of https://github.com/ModelEngine-Group/nexent into develop_image_tool
# Conflicts: # sdk/nexent/core/agents/nexent_agent.py
2 parents be133cd + 9f5585f commit b738fc0

File tree

93 files changed

+4361
-1261
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+4361
-1261
lines changed

backend/apps/prompt_app.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ async def generate_and_save_system_prompt_api(
2727
task_description=prompt_request.task_description,
2828
user_id=user_id,
2929
tenant_id=tenant_id,
30-
language=language
30+
language=language,
31+
tool_ids=prompt_request.tool_ids,
32+
sub_agent_ids=prompt_request.sub_agent_ids
3133
), media_type="text/event-stream")
3234
except Exception as e:
3335
logger.exception(f"Error occurred while generating system prompt: {e}")

backend/apps/vectordatabase_app.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from typing import Any, Dict, List, Optional
44

55
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query
6+
from fastapi.responses import JSONResponse
67

78
from consts.model import IndexingResponse
89
from nexent.vector_database.base import VectorDatabaseCore
@@ -195,3 +196,33 @@ def health_check(vdb_core: VectorDatabaseCore = Depends(get_vector_db_core)):
195196
return ElasticSearchService.health_check(vdb_core)
196197
except Exception as e:
197198
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=f"{str(e)}")
199+
200+
201+
@router.post("/{index_name}/chunks")
202+
def get_index_chunks(
203+
index_name: str = Path(...,
204+
description="Name of the index to get chunks from"),
205+
page: int = Query(
206+
None, description="Page number (1-based) for pagination"),
207+
page_size: int = Query(
208+
None, description="Number of records per page for pagination"),
209+
path_or_url: Optional[str] = Query(
210+
None, description="Filter chunks by document path_or_url"),
211+
vdb_core: VectorDatabaseCore = Depends(get_vector_db_core)
212+
):
213+
"""Get chunks from the specified index, with optional pagination support"""
214+
try:
215+
result = ElasticSearchService.get_index_chunks(
216+
index_name=index_name,
217+
page=page,
218+
page_size=page_size,
219+
path_or_url=path_or_url,
220+
vdb_core=vdb_core,
221+
)
222+
return JSONResponse(status_code=HTTPStatus.OK, content=result)
223+
except Exception as e:
224+
error_msg = str(e)
225+
logger.error(
226+
f"Error getting chunks for index '{index_name}': {error_msg}")
227+
raise HTTPException(
228+
status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=f"Error getting chunks: {error_msg}")

backend/consts/const.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class VectorDatabaseType(str, Enum):
279279
os.getenv("LLM_SLOW_TOKEN_RATE_THRESHOLD", "10.0")) # tokens per second
280280

281281
# APP Version
282-
APP_VERSION = "v1.7.5.3"
282+
APP_VERSION = "v1.7.6"
283283

284284
DEFAULT_ZH_TITLE = "新对话"
285285
DEFAULT_EN_TITLE = "New Conversation"

backend/consts/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ class GeneratePromptRequest(BaseModel):
193193
task_description: str
194194
agent_id: int
195195
model_id: int
196+
tool_ids: Optional[List[int]] = None # Optional: tool IDs from frontend (takes precedence over database query)
197+
sub_agent_ids: Optional[List[int]] = None # Optional: sub-agent IDs from frontend (takes precedence over database query)
196198

197199

198200
class GenerateTitleRequest(BaseModel):

backend/prompts/managed_system_prompt_template.yaml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,34 @@ system_prompt: |-
6161
- 用简单的Python编写代码
6262
- 遵循python代码规范和python语法
6363
- 根据格式规范正确调用工具
64-
- 考虑到代码执行与展示用户代码的区别,使用'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'表达运行代码,使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_CODE>'表达展示代码
65-
- 注意运行的代码不会被用户看到,所以如果用户需要看到代码,你需要使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_CODE>'表达展示代码。
64+
- 考虑到代码执行与展示用户代码的区别,使用'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'表达运行代码,使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_DISPLAY_CODE>'表达展示代码
65+
- 注意运行的代码不会被用户看到,所以如果用户需要看到代码,你需要使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_DISPLAY_CODE>'表达展示代码。
6666
6767
3. 观察结果:
6868
- 查看代码执行结果
6969
7070
在思考结束后,当你认为可以回答用户问题,那么可以不生成代码,直接生成最终回答给到用户并停止循环。
7171
7272
生成最终回答时,你需要遵循以下规范:
73-
1. 使用Markdown格式格式化你的输出。
74-
2. 若使用了检索工具获取到具体信息并基于这些信息回答问题,则需在回答的对应位置添加引用标记:
75-
- 引用标记的字母和数字需要与检索工具的检索结果一一对应
76-
- 引用标记格式为'[[对应字母+数字]]',例如:'[[a1]][[b2]][[c3]]'
73+
1. **Markdown格式要求**:
74+
- 使用标准Markdown语法格式化输出,支持标题、列表、表格、代码块、链接等
75+
- 展示图片和视频使用链接方式,不需要外套代码块,格式:[链接文本](URL),图片格式:![alt文本](图片URL),视频格式:<video src="视频URL" controls></video>
76+
- 段落之间使用单个空行分隔,避免多个连续空行
77+
- 数学公式使用标准Markdown格式:行内公式用 $公式$,块级公式用 $$公式$$
78+
79+
2. **引用标记规范**(仅在使用了检索工具时):
80+
- 引用标记格式必须严格为:`[[字母+数字]]`,例如:`[[a1]]`、`[[b2]]`、`[[c3]]`
81+
- 字母部分必须是单个小写字母(a-e),数字部分必须是整数
82+
- 引用标记的字母和数字必须与检索工具的检索结果一一对应
7783
- 引用标记应紧跟在相关信息或句子之后,通常放在句末或段落末尾
78-
- 注意仅添加引用标记,不需要添加链接、参考文献等多余内容
79-
3. 若未使用检索工具,则不添加任何引用标记
84+
- 多个引用标记可以连续使用,例如:`[[a1]][[b2]]`
85+
- **重要**:仅添加引用标记,不要添加链接、参考文献列表等多余内容
86+
- 如果检索结果中没有匹配的引用,则不显示该引用标记
87+
88+
3. **格式细节要求**:
89+
- 避免在Markdown中使用HTML标签,优先使用Markdown原生语法
90+
- 代码块中的代码应保持原始格式,不要添加额外的转义字符
91+
- 若未使用检索工具,则不添加任何引用标记
8092
8193
注意最后生成的回答要语义连贯,信息清晰,可读性高。
8294
@@ -101,7 +113,7 @@ system_prompt: |-
101113
{{ constraint }}
102114
103115
### python代码规范
104-
1. 如果认为是需要执行的代码,代码内容以'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'标识符结尾。如果是不需要执行仅用于展示的代码,代码内容以'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_CODE>'标识符结尾,其中语言类型例如python、java、javascript等;
116+
1. 如果认为是需要执行的代码,代码内容以'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'标识符结尾。如果是不需要执行仅用于展示的代码,代码内容以'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_DISPLAY_CODE>'标识符结尾,其中语言类型例如python、java、javascript等;
105117
2. 只使用已定义的变量,变量将在多次调用之间持续保持;
106118
3. 使用“print()”函数让下一次的模型调用看到对应变量信息;
107119
4. 正确使用工具的入参,使用关键字参数,不要用字典形式;

backend/prompts/managed_system_prompt_template_en.yaml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,34 @@ system_prompt: |-
6161
- Write code in simple Python
6262
- Follow Python coding standards and Python syntax
6363
- Call tools correctly according to format specifications
64-
- To distinguish between code execution and displaying user code, use 'Code: \n```<RUN>\n' to start executing code and '```<END_CODE>' to indicate its completion. Use 'Code: \n```<DISPLAY:language_type>\n' to start displaying code and '```<END_CODE>' to indicate its completion.
65-
- Note that executed code is not visible to users. If users need to see the code, use 'Code: \n```<DISPLAY:language_type>\n' as the start and '```<END_CODE>' to denote displayed code.
64+
- To distinguish between code execution and displaying user code, use 'Code: \n```<RUN>\n' to start executing code and '```<END_CODE>' to indicate its completion. Use 'Code: \n```<DISPLAY:language_type>\n' to start displaying code and '```<END_DISPLAY_CODE>' to indicate its completion.
65+
- Note that executed code is not visible to users. If users need to see the code, use 'Code: \n```<DISPLAY:language_type>\n' as the start and '```<END_DISPLAY_CODE>' to denote displayed code.
6666
6767
3. Observe Results:
6868
- View code execution results
6969
7070
After thinking, when you believe you can answer the user's question, you can generate a final answer directly to the user without generating code and stop the loop.
7171
7272
When generating the final answer, you need to follow these specifications:
73-
1. Use Markdown format to format your output.
74-
2. If you have used retrieval tools to obtain specific information and answer questions based on this information, you need to add reference marks at the corresponding positions in your answer:
75-
- The letters and numbers of the reference marks need to correspond one-to-one with the retrieval results of the retrieval tools
76-
- The reference mark format is '[[corresponding letter+number]]', for example: '[[a1]][[b2]][[c3]]'
77-
- Reference marks should be placed immediately after the relevant information or sentence, usually at the end of the sentence or paragraph
78-
- Note that only reference marks need to be added, no need to add links, references, or other extraneous content
79-
3. If no retrieval tools are used, do not add any reference marks
73+
1. **Markdown Format Requirements**:
74+
- Use standard Markdown syntax to format your output, supporting headings, lists, tables, code blocks, and links.
75+
- Display images and videos using links instead of wrapping them in code blocks. Use `[link text](URL)` for links, `![alt text](image URL)` for images, and `<video src="video URL" controls></video>` for videos.
76+
- Use a single blank line between paragraphs, avoid multiple consecutive blank lines
77+
- Mathematical formulas use standard Markdown format: inline formulas use $formula$, block formulas use $$formula$$
78+
79+
2. **Reference Mark Specifications** (only when retrieval tools are used):
80+
- Reference mark format must strictly be: `[[letter+number]]`, for example: `[[a1]]`, `[[b2]]`, `[[c3]]`
81+
- The letter part must be a single lowercase letter (a-e), the number part must be an integer
82+
- The letters and numbers of reference marks must correspond one-to-one with the retrieval results of retrieval tools
83+
- Reference marks should be placed immediately after relevant information or sentences, usually at the end of sentences or paragraphs
84+
- Multiple reference marks can be used consecutively, for example: `[[a1]][[b2]]`
85+
- **Important**: Only add reference marks, do not add links, reference lists, or other extraneous content
86+
- If there is no matching reference in the retrieval results, do not display that reference mark
87+
88+
3. **Format Detail Requirements**:
89+
- Avoid using HTML tags in Markdown, prioritize native Markdown syntax
90+
- Code in code blocks should maintain original format, do not add extra escape characters
91+
- If no retrieval tools are used, do not add any reference marks
8092
8193
Note that the final generated answer should be semantically coherent, with clear information and high readability.
8294
@@ -101,7 +113,7 @@ system_prompt: |-
101113
{{ constraint }}
102114
103115
### Python Code Specifications
104-
1. If it is considered to be code that needs to be executed, the code content begins with 'code: \n```<RUN>\n' and ends with '```<END_CODE>'. If the code does not need to be executed for display only, the code content begins with 'code:\n```<DISPLAY:language_type>\n', and ends with '```<END_CODE>', where language_type can be python, java, javascript, etc;
116+
1. If it is considered to be code that needs to be executed, the code content begins with 'code: \n```<RUN>\n' and ends with '```<END_CODE>'. If the code does not need to be executed for display only, the code content begins with 'code:\n```<DISPLAY:language_type>\n', and ends with '```<END_DISPLAY_CODE>', where language_type can be python, java, javascript, etc;
105117
2. Only use defined variables, variables will persist between multiple calls;
106118
3. Use "print()" function to let the next model call see corresponding variable information;
107119
4. Use tool input parameters correctly, use keyword arguments, not dictionary format;

backend/prompts/manager_system_prompt_template.yaml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ system_prompt: |-
6262
- 用简单的Python编写代码
6363
- 遵循python代码规范和python语法
6464
- 正确调用工具或助手解决问题
65-
- 考虑到代码执行与展示用户代码的区别,使用'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'表达运行代码,使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_CODE>'表达展示代码
66-
- 注意运行的代码不会被用户看到,所以如果用户需要看到代码,你需要使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_CODE>'表达展示代码。
65+
- 考虑到代码执行与展示用户代码的区别,使用'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'表达运行代码,使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_DISPLAY_CODE>'表达展示代码
66+
- 注意运行的代码不会被用户看到,所以如果用户需要看到代码,你需要使用'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_DISPLAY_CODE>'表达展示代码。
6767
6868
3. 观察结果:
6969
- 查看代码执行结果
@@ -72,13 +72,25 @@ system_prompt: |-
7272
在思考结束后,当你认为可以回答用户问题,那么可以不生成代码,直接生成最终回答给到用户并停止循环。
7373
7474
生成最终回答时,你需要遵循以下规范:
75-
1. 使用Markdown格式格式化你的输出。
76-
2. 若使用了检索工具获取到具体信息并基于这些信息回答问题,则需在回答的对应位置添加引用标记:
77-
- 引用标记的字母和数字需要与检索工具的检索结果一一对应
78-
- 引用标记格式为'[[对应字母+数字]]',例如:'[[a1]][[b2]][[c3]]'
75+
1. Markdown格式要求:
76+
- 使用标准Markdown语法格式化输出,支持标题、列表、表格、代码块、链接等
77+
- 展示图片和视频使用链接方式,不需要外套代码块,格式:[链接文本](URL),图片格式:![alt文本](图片URL),视频格式:<video src="视频URL" controls></video>
78+
- 段落之间使用单个空行分隔,避免多个连续空行
79+
- 数学公式使用标准Markdown格式:行内公式用 $公式$,块级公式用 $$公式$$
80+
81+
2. 引用标记规范(仅在使用了检索工具时):
82+
- 引用标记格式必须严格为:`[[字母+数字]]`,例如:`[[a1]]`、`[[b2]]`、`[[c3]]`
83+
- 字母部分必须是单个小写字母(a-e),数字部分必须是整数
84+
- 引用标记的字母和数字必须与检索工具的检索结果一一对应
7985
- 引用标记应紧跟在相关信息或句子之后,通常放在句末或段落末尾
80-
- 注意仅添加引用标记,不需要添加链接、参考文献等多余内容
81-
3. 若未使用检索工具,则不添加任何引用标记
86+
- 多个引用标记可以连续使用,例如:`[[a1]][[b2]]`
87+
- **重要**:仅添加引用标记,不要添加链接、参考文献列表等多余内容
88+
- 如果检索结果中没有匹配的引用,则不显示该引用标记
89+
90+
3. 格式细节要求:
91+
- 避免在Markdown中使用HTML标签,优先使用Markdown原生语法
92+
- 代码块中的代码应保持原始格式,不要添加额外的转义字符
93+
- 若未使用检索工具,则不添加任何引用标记
8294
8395
### 可用资源
8496
你只能使用以下资源,不得使用任何其他工具或助手:
@@ -129,7 +141,7 @@ system_prompt: |-
129141
{{ constraint }}
130142
131143
### python代码规范
132-
1. 如果认为是需要执行的代码,代码内容以'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'标识符结尾。如果是不需要执行仅用于展示的代码,代码内容以'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_CODE>'标识符结尾,其中语言类型例如python、java、javascript等;
144+
1. 如果认为是需要执行的代码,代码内容以'代码:\n```<RUN>\n'开头,并以'```<END_CODE>'标识符结尾。如果是不需要执行仅用于展示的代码,代码内容以'代码:\n```<DISPLAY:语言类型>\n'开头,并以'```<END_DISPLAY_CODE>'标识符结尾,其中语言类型例如python、java、javascript等;
133145
2. 只使用已定义的变量,变量将在多次调用之间持续保持;
134146
3. 使用“print()”函数让下一次的模型调用看到对应变量信息;
135147
4. 正确使用工具/助手的入参,使用关键字参数,不要用字典形式;

0 commit comments

Comments
 (0)