| |
| """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"]) |
|
|
| |
| os.makedirs(args.output_dir, exist_ok=True) |
|
|
| |
| function_generator = FunctionGenerator(llm=args.model, temperature=args.temperature) |
|
|
| if not task_list: |
| print("No tasks found.") |
| else: |
| |
| 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) |
|
|
| |
| 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() |
|
|