czty's picture
Add files using upload-large-folder tool
11f4e59 verified
Raw
History Blame Contribute Delete
2.2 kB
#!/usr/bin/env python3
"""Command-line tool to generate Python functions from task descriptions using the function_generator agent."""
import argparse
import json
import os
from biomni.agent.function_generator import FunctionGenerator
from tqdm import tqdm
def main():
"""Main function for the command-line tool."""
parser = argparse.ArgumentParser(description="Generate Python functions given task descriptions")
parser.add_argument(
"--task",
"-t",
type=str,
help="JSON file containing a list of task descriptions",
)
parser.add_argument(
"--output-dir",
"-o",
type=str,
default="generated_functions",
help="Directory to save the generated functions (default: generated_functions)",
)
parser.add_argument(
"--model",
"-m",
type=str,
default="claude-3-7-sonnet-latest",
help="LLM model to use (default: claude-3-7-sonnet-latest)",
)
parser.add_argument(
"--temperature",
type=float,
default=0.7,
help="Temperature setting for the LLM (default: 0.7)",
)
args = parser.parse_args()
with open(args.task) as f_tasks:
task_list = json.load(f_tasks)
task_descriptions = list(task_list["tasks"])
# Create the output directory if it doesn't exist
os.makedirs(args.output_dir, exist_ok=True)
# Initialize the function generator agent
function_generator = FunctionGenerator(llm=args.model, temperature=args.temperature)
if not task_list:
print("No tasks found.")
else:
# tqdm shows a progress bar, file names as description
for _i, desc in enumerate(tqdm(task_descriptions, desc="Generating Python scripts given task descriptions"), 1):
generated_script_name, generated_codes = function_generator.go(desc)
# Save results
result_path = os.path.join(args.output_dir, generated_script_name)
os.makedirs(os.path.dirname(result_path), exist_ok=True)
with open(result_path, "w") as f:
f.write(generated_codes)
print("DONE")
if __name__ == "__main__":
main()