Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions aperag/api/components/schemas/collection.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,20 @@ collectionSource:
type: string


indexPrompts:
type: object
description: Custom prompts for various index types
properties:
graph:
type: string
description: Custom prompt for graph/entity extraction
summary:
type: string
description: Custom prompt for document summarization
vision:
type: string
description: Custom prompt for image analysis

knowledgeGraphConfig:
type: object
description: Configuration for knowledge graph generation
Expand Down Expand Up @@ -153,6 +167,8 @@ collectionConfig:
- $ref: '#/knowledgeGraphConfig'
default:
entity_types: ["organization", "person", "geo", "event", "product", "technology", "date", "category"]
index_prompts:
$ref: '#/indexPrompts'
language:
type: string
description: Language for the collection content and processing
Expand Down
171 changes: 171 additions & 0 deletions aperag/api/components/schemas/prompt.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
promptDetail:
type: object
description: Detailed prompt information with source and customization status
properties:
content:
type: string
description: Actual prompt content (resolved with priority)
source:
type: string
enum: [user, system, hardcoded]
description: Source of the prompt
customized:
type: boolean
description: Whether user has customized this prompt
description:
type: string
description: Optional description
language:
type: string
enum: [zh-CN, en-US]
description: Language of the prompt

userPromptsResponse:
type: object
description: User's prompt configuration with all types
properties:
agent_system:
$ref: '#/promptDetail'
agent_query:
$ref: '#/promptDetail'
index_graph:
$ref: '#/promptDetail'
index_summary:
$ref: '#/promptDetail'
index_vision:
$ref: '#/promptDetail'

updateUserPromptsRequest:
type: object
required:
- language
- prompts
properties:
language:
type: string
enum: [zh-CN, en-US]
default: zh-CN
prompts:
type: object
description: Prompts to update
additionalProperties:
type: string
example:
agent_system: "You are a professional technical support assistant..."
index_graph: "Extract entities from medical text..."

updateUserPromptsResponse:
type: object
properties:
message:
type: string
updated:
type: array
items:
type: string

resetPromptsRequest:
type: object
required:
- language
properties:
language:
type: string
enum: [zh-CN, en-US]
default: zh-CN
types:
type: array
items:
type: string
description: Prompt types to reset, omit to reset all

resetPromptsResponse:
type: object
properties:
message:
type: string
reset:
type: array
items:
type: string

deleteUserPromptResponse:
type: object
properties:
message:
type: string
type:
type: string
new_content:
type: string
source:
type: string
enum: [system, hardcoded]

systemPromptDetail:
type: object
properties:
type:
type: string
content:
type: string
language:
type: string
description:
type: string

systemPromptsResponse:
type: object
description: System default prompts
additionalProperties:
type: object
properties:
content:
type: string
description:
type: string
language:
type: string

previewRequest:
type: object
required:
- template
properties:
template:
type: string
variables:
type: object
additionalProperties: true

previewResponse:
type: object
properties:
rendered:
type: string

validateRequest:
type: object
required:
- type
- template
properties:
type:
type: string
enum: [agent_system, agent_query, index_graph, index_summary, index_vision]
template:
type: string

validateResponse:
type: object
properties:
valid:
type: boolean
errors:
type: array
items:
type: string
warnings:
type: array
items:
type: string
14 changes: 14 additions & 0 deletions aperag/api/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,20 @@ paths:
/settings/test_mineru_token:
$ref: './paths/misc.yaml#/test_mineru_token'

# prompts
/prompts/user:
$ref: './paths/prompts.yaml#/promptsUser'
/prompts/user/{prompt_type}:
$ref: './paths/prompts.yaml#/promptsUserType'
/prompts/user/reset:
$ref: './paths/prompts.yaml#/promptsUserReset'
/prompts/system:
$ref: './paths/prompts.yaml#/promptsSystem'
/prompts/preview:
$ref: './paths/prompts.yaml#/promptsPreview'
/prompts/validate:
$ref: './paths/prompts.yaml#/promptsValidate'

# graphs
/collections/{collection_id}/graphs/labels:
$ref: './paths/collections.yaml#/graph_labels'
Expand Down
147 changes: 147 additions & 0 deletions aperag/api/paths/prompts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
promptsUser:
get:
summary: Get user prompts
description: Get user's prompt configuration with priority resolution and source information
parameters:
- name: language
in: query
schema:
type: string
enum: [zh-CN, en-US]
default: zh-CN
responses:
'200':
description: User prompts with resolution details
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/userPromptsResponse'
put:
summary: Update user prompts
description: Batch update user's prompt configurations
requestBody:
required: true
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/updateUserPromptsRequest'
responses:
'200':
description: Prompts updated successfully
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/updateUserPromptsResponse'
'400':
description: Invalid request

promptsUserType:
delete:
summary: Delete user prompt
description: Delete user's specific prompt configuration (reset to system default)
parameters:
- name: prompt_type
in: path
required: true
schema:
type: string
enum: [agent_system, agent_query, index_graph, index_summary, index_vision]
- name: language
in: query
schema:
type: string
enum: [zh-CN, en-US]
default: zh-CN
responses:
'200':
description: Prompt reset successfully
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/deleteUserPromptResponse'
'404':
description: Prompt not customized by user

promptsUserReset:
post:
summary: Reset user prompts
description: Batch reset user's prompt configurations
requestBody:
required: true
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/resetPromptsRequest'
responses:
'200':
description: Prompts reset successfully
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/resetPromptsResponse'
'400':
description: Invalid request

promptsSystem:
get:
summary: Get system default prompts
description: Get system default prompt configurations for reference
parameters:
- name: language
in: query
schema:
type: string
enum: [zh-CN, en-US]
default: zh-CN
- name: type
in: query
schema:
type: string
enum: [agent_system, agent_query, index_graph, index_summary, index_vision]
responses:
'200':
description: System default prompts
content:
application/json:
schema:
oneOf:
- $ref: '../components/schemas/prompt.yaml#/systemPromptDetail'
- $ref: '../components/schemas/prompt.yaml#/systemPromptsResponse'

promptsPreview:
post:
summary: Preview prompt rendering
description: Preview how a prompt template will be rendered with given variables
requestBody:
required: true
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/previewRequest'
responses:
'200':
description: Rendered prompt
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/previewResponse'
'400':
description: Invalid template or variables

promptsValidate:
post:
summary: Validate prompt template
description: Validate prompt template syntax (Jinja2)
requestBody:
required: true
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/validateRequest'
responses:
'200':
description: Validation result
content:
application/json:
schema:
$ref: '../components/schemas/prompt.yaml#/validateResponse'
2 changes: 2 additions & 0 deletions aperag/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
from aperag.views.marketplace import router as marketplace_router
from aperag.views.marketplace_collections import router as marketplace_collections_router
from aperag.views.openai import router as openai_router
from aperag.views.prompts import router as prompts_router
from aperag.views.settings import router as settings_router
from aperag.views.web import router as web_router

Expand Down Expand Up @@ -105,6 +106,7 @@ async def health_check():
app.include_router(marketplace_router, prefix="/api/v1") # Add marketplace router
app.include_router(marketplace_collections_router, prefix="/api/v1") # Add marketplace collections router
app.include_router(settings_router, prefix="/api/v1")
app.include_router(prompts_router, prefix="/api/v1") # Add prompts router
app.include_router(web_router, prefix="/api/v1") # Add web search router
app.include_router(evaluation_router, prefix="/api/v1")
app.include_router(bot_router, prefix="/api/v1")
Expand Down
Loading
Loading