| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import argparse |
| import logging |
| import os |
|
|
| import sys |
|
|
| from camel.typing import ModelType |
|
|
| root = os.path.dirname(__file__) |
| sys.path.append(root) |
|
|
| from chatdev.chat_chain import ChatChain |
|
|
|
|
| def get_config(company): |
| """ |
| return configuration json files for ChatChain |
| user can customize only parts of configuration json files, other files will be left for default |
| Args: |
| company: customized configuration name under CompanyConfig/ |
| |
| Returns: |
| path to three configuration jsons: [config_path, config_phase_path, config_role_path] |
| """ |
| config_dir = os.path.join(root, "CompanyConfig", company) |
| default_config_dir = os.path.join(root, "CompanyConfig", "Default") |
|
|
| config_files = [ |
| "ChatChainConfig.json", |
| "PhaseConfig.json", |
| "RoleConfig.json" |
| ] |
|
|
| config_paths = [] |
|
|
| for config_file in config_files: |
| company_config_path = os.path.join(config_dir, config_file) |
| default_config_path = os.path.join(default_config_dir, config_file) |
|
|
| if os.path.exists(company_config_path): |
| config_paths.append(company_config_path) |
| else: |
| config_paths.append(default_config_path) |
|
|
| return tuple(config_paths) |
|
|
|
|
|
|
| def runchatdev(task, config): |
|
|
| parser = argparse.ArgumentParser(description='argparse') |
| parser.add_argument('--config', type=str, default="Default", |
| help="Name of config, which is used to load configuration under CompanyConfig/") |
| parser.add_argument('--org', type=str, default="Company", |
| help="Name of organization, your software will be generated in WareHouse/name_org_timestamp") |
| parser.add_argument('--task', type=str, default="Develop a basic Gomoku game.", |
| help="Prompt of software") |
| parser.add_argument('--name', type=str, default="Game", |
| help="Name of software, your software will be generated in WareHouse/name_org_timestamp") |
| parser.add_argument('--model', type=str, default="GPT_3_5_TURBO", |
| help="GPT Model, choose from {'GPT_3_5_TURBO','GPT_4','GPT_4_32K'}") |
| args = parser.parse_args() |
|
|
| args.config = config |
| args.task = task |
|
|
| |
|
|
| |
| |
| |
| config_path, config_phase_path, config_role_path = get_config(args.config) |
| args2type = {'GPT_3_5_TURBO': ModelType.GPT_3_5_TURBO, 'GPT_4': ModelType.GPT_4, 'GPT_4_32K': ModelType.GPT_4_32k} |
| chat_chain = ChatChain(config_path=config_path, |
| config_phase_path=config_phase_path, |
| config_role_path=config_role_path, |
| task_prompt=args.task, |
| project_name=args.name, |
| org_name=args.org, |
| model_type=args2type[args.model]) |
|
|
| |
| |
| |
|
|
| logging.basicConfig(filename=chat_chain.log_filepath, level=logging.DEBUG, |
| format='[%(asctime)s %(levelname)s] %(message)s', |
| datefmt='%Y-%d-%m %H:%M:%S', encoding="utf-8") |
|
|
| |
| |
| |
|
|
| chat_chain.pre_processing() |
|
|
| |
| |
| |
|
|
| chat_chain.make_recruitment() |
|
|
| |
| |
| |
|
|
| chat_chain.execute_chain() |
|
|
| |
| |
| |
|
|
| chat_chain.post_processing() |
|
|
| if __name__ == "__main__": |
| runchatdev() |