Spaces:
Sleeping
Sleeping
# algoforge_prime/core/evolution_engine.py | |
from core.llm_clients import call_huggingface_api, call_gemini_api, LLMResponse # Absolute | |
from prompts.system_prompts import get_system_prompt # Absolute | |
# from ..prompts.prompt_templates import format_evolution_user_prompt # If you create one | |
def evolve_solution( | |
original_solution_text: str, | |
comprehensive_critique_text: str, # This includes LLM critique + test summary | |
original_combined_score: int, | |
problem_description: str, | |
problem_type: str, | |
llm_client_config: dict # {"type": ..., "model_id": ..., "temp": ..., "max_tokens": ...} | |
) -> str: # Returns evolved solution text or an error string | |
""" | |
Attempts to evolve a solution based on its critique and score. | |
""" | |
system_p_evolve = get_system_prompt("evolution_general") # problem_type can be used for specialization | |
user_p_evolve = ( | |
f"Original Problem Context: \"{problem_description}\"\n\n" | |
f"The solution to be evolved achieved a score of {original_combined_score}/10.\n" | |
f"Here is the solution text:\n```python\n{original_solution_text}\n```\n\n" | |
f"Here is the comprehensive evaluation and critique it received (including any automated test feedback):\n'''\n{comprehensive_critique_text}\n'''\n\n" | |
f"Your Task: Based on the above, evolve the provided solution to make it demonstrably superior. " | |
f"Address any flaws, incompleteness, or inefficiencies mentioned in the critique or highlighted by test failures. " | |
f"If the solution was good, make it even better (e.g., more robust, more efficient, clearer). " | |
f"Clearly explain the key improvements you've made as an integral part of your evolved response (e.g., in comments or a concluding summary)." | |
) | |
llm_response_obj = None # type: LLMResponse | |
if llm_client_config["type"] == "hf": | |
llm_response_obj = call_huggingface_api( | |
user_p_evolve, llm_client_config["model_id"], | |
temperature=llm_client_config["temp"], max_new_tokens=llm_client_config["max_tokens"], | |
system_prompt_text=system_p_evolve | |
) | |
elif llm_client_config["type"] == "google_gemini": | |
llm_response_obj = call_gemini_api( | |
user_p_evolve, llm_client_config["model_id"], | |
temperature=llm_client_config["temp"], max_new_tokens=llm_client_config["max_tokens"], | |
system_prompt_text=system_p_evolve | |
) | |
else: | |
return f"ERROR (Evolution): Unknown LLM client type '{llm_client_config['type']}'" | |
if llm_response_obj.success: | |
return llm_response_obj.text | |
else: | |
return f"ERROR (Evolution with {llm_response_obj.model_id_used}): {llm_response_obj.error}" |