Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Contributing Guidlines

Ziyú Ye edited this pageJan 25, 2024 ·1 revision

🐫Welcome to CAMEL! 🐫

Thank you for your interest in contributing to the CAMEL project! 🎉 We're excited to have your support. As an open-source initiative in a rapidly evolving and open-ended field, we wholeheartedly welcome contributions of all kinds. Whether you want to introduce new features, enhance the infrastructure, improve documentation, asking issues, add more examples, implement state-of-the-art research ideas, or fix bugs, we appreciate your enthusiasm and efforts. 🙌 You are welcome to join ourslack for more efficient communication. 💬

Guidelines 📝

Contributing to the Code 👨‍💻👩‍💻

If you're eager to contribute to this project, that's fantastic! We're thrilled to have your support.

Make sure to mention any related issues and tag the relevant maintainers too. 💪

Before your pull request can be merged, it must pass the formatting, linting, and testing checks. You can find instructions on running these checks locally under theCommon Tasks section below. 🔍

Ensuring excellent documentation and thorough testing is absolutely crucial. Here are some guidelines to follow based on the type of contribution you're making:

  • If you fix a bug:
    • Add a relevant unit test when possible. These can be found in thetest directory.
  • If you make an improvement:
    • Update any affected example console scripts in theexamples directory, Gradio demos in theapps directory, and documentation in thedocs directory.
    • Update unit tests when relevant.
  • If you add a feature:
    • Include unit tests in thetest directory.
    • Add a demo script in theexamples directory.

We're a small team focused on building great things. If you have something in mind that you'd like to add or modify, opening a pull request is the ideal way to catch our attention. 🚀

Issues 🐛🆙🌟

Ourissues page on GitHub is regularly updated with bugs, improvements, and feature requests. We have a handy set of labels to help you sort through and find issues that interest you. Feel free to use these labels to keep things organized.

When you start working on an issue, please assign it to yourself so that others know it's being taken care of.

When creating a new issue, it's best to keep it focused on a specific bug, improvement, or feature. If two issues are related or blocking each other, it's better to link them instead of merging them into one.

We do our best to keep these issues up to date, but considering the fast-paced nature of this field, some may become outdated. If you come across any such issues, please give us a heads-up so we can address them promptly. 👀

Getting Help 🆘

Our aim is to make the developer setup as straightforward as possible. If you encounter any challenges during the setup process, don't hesitate to reach out to a maintainer. We're here to assist you and ensure that the experience is smooth not just for you but also for future contributors. 😊

In line with this, we do have specific guidelines for code linting, formatting, and documentation in the codebase. If you find these requirements difficult or even just bothersome to work with, please feel free to get in touch with a maintainer. We don't want these guidelines to hinder the integration of good code into the codebase, so we're more than happy to provide support and find a solution that works for you. 🤝

Quick Start 🚀

To get started with CAMEL, follow these steps:

# Clone github repogit clone https://github.com/camel-ai/camel.git# Change directory into project directorycd camel# Activate camel virtual environmentpoetry shell# Install camel from source# It takes about 75s to resolve dependencies and 10s to install them, depending on your hardware and network,poetry install --with dev,docs# Or if you want to use all other extra packagespoetry install --with dev,docs -E all# (Optional)# The following command installs a pre-commit hook into the local git repo,# so every commit gets auto-formatted and linted.pre-commit install# Run camel's unit testspytesttest# Exit the virtual environmentexit

These commands will install all the necessary dependencies for running the package, examples, linting, formatting, tests, and coverage.

To verify that everything is set up correctly, runpytest . This will ensure that all tests pass successfully. ✅

Common Actions 🔄

Update dependencies

Whenever you add, update, or delete any dependencies inpyproject.toml, please runpoetry lock to synchronize the dependencies with the lock file.

Linting & Formatting ✨

flake8isort.

For extra validation of type hints:

mypy --namespace-packages -p camelmypy --namespace-packages -ptestmypy --namespace-packages -p examplesmypy --namespace-packages -p apps

Coverage 📊

Code coverage measures the extent to which unit tests cover the code, helping identify both robust and less robust areas of the codebase.

To generate a report showing the current code coverage, execute one of the following commands.

To include all source files into coverage:

coverage erasecoverage run --source=. -m pytest.coverage html# Open htmlcov/index.html

To include only tested files:

pytest --cov --cov-report=html

The coverage report will be generated athtmlcov/index.html.

Tests 🧪

Unit tests cover modular logic that doesn't require calls to outside APIs. Currently, the test setup requires an OpenAI API key to test the framework, making them resemble integration tests.

To run all tests including those that use OpenAI API, use the following command:

pytest.

To quickly run only local isolated unit and integration tests:

pytest --fast-test-mode.

If you're developing with VSCode, make sure to create a.env file in the repository root and include your OpenAI API key:

OPENAI_API_KEY=sk-XXXXXXXXOPENAI_API_BASE_URL=https://XXXXXXXX (Should you utilize an OpenAI proxy service, kindly specify this)

Documentation 📚

Contribute to Documentation 📝

The documentation is primarily generated automatically bySphinx using the code.

We kindly request that you provide comprehensive documentation for all classes and methods to ensure high-quality documentation coverage.

Build Documentation Locally 🛠️

To build the documentation locally, follow these steps:

cd docsmake html

More guidelines about building and hosting documentations locally can be foundhere.

Versioning and Release 🚀

As of now, CAMEL is actively in development and not published to PyPI yet.

CAMEL follows thesemver versioning standard. As pre-1.0 software, even patch releases may containnon-backwards-compatible changes. Currently, the major version is 0, and the minor version is incremented. Releases are made once the maintainers feel that a significant body of changes has accumulated.

License 📜

The source code of the CAMEL project is licensed under Apache 2.0. Your contributed code will be also licensed under Apache 2.0 by default. To add license to you code, you can manually copy-paste it fromlicense_template.txt to the head of your files or run theupdate_license.py script to automate the process:

python licenses/update_license.py. licenses/license_template.txt

This script will add licenses to all the*.py files or update the licenses if the existing licenses are not the same aslicense_template.txt.

Giving Credit 🎉

If your contribution has been included in a release, we'd love to give you credit on Twitter, but only if you're comfortable with it!

If you have a Twitter account that you would like us to mention, please let us know either in the pull request or through another communication method. We want to make sure you receive proper recognition for your valuable contributions. 😄

🪐 This Wiki page is a budding planet in the universe of knowledge, still under construction. Beware of informational meteor showers and the occasional black hole of error as it orbits towards completeness. - From an anonymous cat.

Clone this wiki locally

[8]ページ先頭

©2009-2025 Movatter.jp