gateway/modules/workflows/processing/shared/promptGenerationActionsReact.py
2025-10-05 11:34:40 +02:00

108 lines
3.1 KiB
Python

"""
React Mode Prompt Generation
Handles prompt templates for react mode action handling.
"""
def createReactPlanSelectionPromptTemplate() -> str:
"""Create action selection prompt template for React mode with minimal placeholders."""
return """Select one action to advance the task.
OBJECTIVE:
{{KEY:USER_PROMPT}}
AVAILABLE_DOCUMENTS:
{{KEY:AVAILABLE_DOCUMENTS}}
AVAILABLE_METHODS:
{{KEY:AVAILABLE_METHODS}}
REPLY: Return only a JSON object with the selected action:
{{
"action": "method.action_name"
}}
RULES:
1. Use EXACT action names from AVAILABLE_METHODS
2. Return ONLY JSON - no other text
3. Do NOT use markdown code blocks
4. Do NOT add explanations
"""
def createReactParametersPromptTemplate() -> str:
"""Create comprehensive action parameter prompt template for React mode with all available context."""
return """Generate parameters for this action.
ACTION_OBJECTIVE (the objective for this action to fulfill):
{{KEY:ACTION_OBJECTIVE}}
ACTION_SIGNATURE (the signature of the action to generate parameters for):
{{KEY:ACTION_SIGNATURE}}
AVAILABLE_DOCUMENTS:
{{KEY:AVAILABLE_DOCUMENTS}}
AVAILABLE_CONNECTIONS:
{{KEY:AVAILABLE_CONNECTIONS}}
USER_REQUEST (final user prompt to deliver):
{{KEY:USER_PROMPT}}
USER_LANGUAGE:
{{KEY:USER_LANGUAGE}}
PREVIOUS_ACTION_RESULTS:
{{KEY:PREVIOUS_ACTION_RESULTS}}
LEARNINGS_AND_IMPROVEMENTS:
{{KEY:LEARNINGS_AND_IMPROVEMENTS}}
LATEST_REFINEMENT_FEEDBACK:
{{KEY:LATEST_REFINEMENT_FEEDBACK}}
SELECTED_ACTION:
{{KEY:SELECTED_ACTION}}
REPLY: Return only a JSON object with the parameters according to the ACTION_SIGNATURE without any comments in the structure below:
{{
"parameters": {{
"parameter": "value",
}},
"signature": [List of all signatures, you see in the ACTION_SIGNATURE]
}}
RULES:
1. Use ONLY parameter names from ACTION_SIGNATURE
2. Use exact connection references from AVAILABLE_CONNECTIONS for connectionReference parameters
3. Use exact document references from AVAILABLE_DOCUMENTS for documentList parameters
4. Learn from PREVIOUS_ACTION_RESULTS and LEARNINGS_AND_IMPROVEMENTS to avoid repeating mistakes
5. Consider LATEST_REFINEMENT_FEEDBACK when generating parameters
6. Use the ACTION_OBJECTIVE to understand the specific goal for this action
7. Generate parameters that align with the USER_LANGUAGE when applicable
8. Return ONLY JSON - no other text
9. Do NOT use markdown code blocks
10. Do NOT add explanations
"""
def createReactRefinementPromptTemplate() -> str:
"""Create refinement prompt template for React mode with full context placeholders."""
return """Decide the next step based on the observation.
OBJECTIVE:
{{KEY:USER_PROMPT}}
OBSERVATION:
{{KEY:REVIEW_CONTENT}}
REPLY: Return only a JSON object with your decision:
{{
"decision": "continue|stop",
"reason": "brief explanation"
}}
RULES:
1. Use "continue" if objective NOT fulfilled
2. Use "stop" if objective fulfilled
3. Return ONLY JSON - no other text
4. Do NOT use markdown code blocks
5. Do NOT add explanations
"""