Package: mlcopilot
CoMLCoML (formerly MLCopilot) is an interactive coding assistant for data scientists and machine learning developers, empowered on large language models.Highlight features:Out-of-the-box interactive natural language programming interface for data mining and machine learning tasks.Integration with Jupyter lab and Jupyter notebook.Built-in large knowledge base of machine learning, enhancing the ability of solving complex tasks.Installationpipinstallmlcopilot(We can't have the namecomlon PyPI, so we usemlcopilotinstead.)CoML in Jupyter LabWe recommend trying CoML in a Jupyter Lab environment. Before using CoML, please make sure that:You have exportedOPENAI_API_KEY=sk-xxxxin your environment. Alternatively, you can also use a.envfile.Use%load_ext comlin your notebook to active CoML extension.Then we have provided several commands to assist your journey with interactive coding in Jupyter Lab.%coml <task>to prompt CoML to write a cell for your task.%comlfixto fix the cell just above the current cell. You can also use%comlfix <reason>to provide details for what's wrong.%comlinspireto inspire you with a cell describing what to do next.Limitations:Currently, CoML only supports Jupyter Lab and classical Jupyter notebook (nbclassic, and only on Linux platforms). We are still working on supports of newer Jupyter notebook, Jupyter-vscode and Google Colab.CoML uses gpt-3.5-turbo-16k model in its implementation. There is no way to change the model for now. The cost of using this model is around $0.04 per request. Please be aware of this cost.CoML Config AgentCoML config agent is the implementation ofMLCopilot, which can suggest a ML configuration within a specific task, for a specific task. Currently, it is an independent component residing incoml.configagent. In the future, we will integrate it into the CoML system.(TODO: The demo needs an update.)Extra preparation stepsPlease follow the steps to use CoML config agent:Clone this repo:git clone REPO_URL; cd comlPut assets/coml.db in your home directory:cp assets/coml.db ~/.coml/coml.dbCopycoml/.env.templateto~/.coml/.envand put your API keys in the file.Command line utilityCurrently, it can only be invoked independently. You can use the following command line:coml-configagent --space <space> --task <task>If you feel uncertain about what to put into<space>or<task>, see the demo above, or try the interactive usage below:coml-configagent --interactiveAPI Usagefromcoml.configagent.suggestimportsuggestspace=import_space("YOUR_SPACE_ID")task_desc="YOUR_TASK_DESCRIPTION_FOR_NEW_TASK"suggest_configs,knowledge=suggest(space,task_desc)DevelopmentDevelopment documentation stays here for now. It shall be moved to a separate document later.Project structureImportant files and folders:CoML
├── assets          # data, examples, demos
├── coml            # Python package
├── examples        # example scripts
├── install.json    # Jupyter lab extension installation file
├── package.json    # Jupyter lab extension package file
├── pyproject.toml  # Python package configuration
├── src             # Jupyter lab extension source code
├── test            # Python package tests
└── tsconfig.json   # Jupyter lab extension TypeScript configurationInstallation and uninstallationYou can use the following command for development installation:pip install -e .[dev]If you are to develop Jupyter lab extension, you will also need to install NodeJS and npm, and run the following command:# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Rebuild extension Typescript source after making changes
jlpm run buildTo uninstall, you can run the following commands:# Server extension must be manually disabled in develop modejupyterserverextensiondisablecoml# Uninstall the Python packagepipuninstallmlcopilotIn development mode, you will also need to remove the symlink created byjupyter labextension developcommand.
To find its location, you can runjupyter labextension listto figure out where thelabextensionsfolder is located.
Then you can remove the symlink namedcomlwithin that folder.PackaginghatchbuildCitationIf you find this work useful, please cite the paper as below:@article{zhang2023mlcopilot,
    title={MLCopilot: Unleashing the Power of Large Language Models in Solving Machine Learning Tasks},
    author={Zhang, Lei and Zhang, Yuge and Ren, Kan and Li, Dongsheng and Yang, Yuqing},
    journal={arXiv preprint arXiv:2304.14979},
    year={2023}
}LicenseThe entire codebase is underMIT license.