You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.5 KiB
54 lines
1.5 KiB
from typing import Any
|
|
|
|
from tenacity import retry, stop_after_attempt, wait_exponential
|
|
|
|
from swarms.prompts.prompt_generator import (
|
|
prompt_generator_sys_prompt as second_sys_prompt,
|
|
)
|
|
from swarms.prompts.prompt_generator_optimizer import (
|
|
prompt_generator_sys_prompt,
|
|
)
|
|
from swarms.utils.loguru_logger import initialize_logger
|
|
|
|
logger = initialize_logger(log_folder="ape_agent")
|
|
|
|
|
|
@retry(
|
|
stop=stop_after_attempt(3),
|
|
wait=wait_exponential(multiplier=1, min=4, max=10),
|
|
)
|
|
def auto_generate_prompt(
|
|
task: str = None,
|
|
model: Any = None,
|
|
max_tokens: int = 4000,
|
|
use_second_sys_prompt: bool = True,
|
|
*args,
|
|
**kwargs,
|
|
):
|
|
"""
|
|
Generates a prompt for a given task using the provided model.
|
|
|
|
Args:
|
|
task (str, optional): The task for which to generate a prompt.
|
|
model (Any, optional): The model to be used for prompt generation.
|
|
max_tokens (int, optional): The maximum number of tokens in the generated prompt. Defaults to 4000.
|
|
use_second_sys_prompt (bool, optional): Whether to use the second system prompt. Defaults to True.
|
|
|
|
Returns:
|
|
str: The generated prompt.
|
|
"""
|
|
try:
|
|
system_prompt = (
|
|
second_sys_prompt.get_prompt()
|
|
if use_second_sys_prompt
|
|
else prompt_generator_sys_prompt.get_prompt()
|
|
)
|
|
output = model.run(
|
|
system_prompt + task, max_tokens=max_tokens
|
|
)
|
|
print(output)
|
|
return output
|
|
except Exception as e:
|
|
logger.error(f"Error generating prompt: {str(e)}")
|
|
raise
|