4.7 KiB
4.7 KiB
Thank you for investing your time and effort in contributing to our project, we appreciate it a lot! 🤗
General Guidelines
- If you want to contribute a bug fix or a new feature that isn't listed in the issues yet, please open a new issue for it and link it to your PR.
- Follow Google's Best Practices for Java Libraries
- Keep the code compatible with Java 8. We plan to increase the baseline to Java 17 a bit later.
- Avoid adding new dependencies as much as possible. If absolutely necessary, try to use the same libraries which are already used in the project.
- Write unit and/or integration tests for your code. This is critical: no tests, no review!
- Avoid making breaking changes. Always keep backward compatibility in mind.
- Follow existing naming conventions.
- Add Javadoc where necessary. There's no need to duplicate Javadoc from the implemented interfaces.
- Follow existing code style present in the project.
- Large features should be discussed with maintainers before implementation. Please ping @langchain4j in the comments on the issue.
Priorities
All issues are prioritized by maintainers. There are 4 priorities: P1, P2, P3 and P4.
Please start with the higher priorities. PRs will be reviewed in order of priority, with bugs being a higher priority than new features.
Please note that we do not have the capacity to review all PRs immediately.
Opening an issue
- Please fill in all sections of the issue template.
Opening a PR
- Link an issue to your PR. If there is no issue yet, open one.
- Fill in all the sections of the PR template.
- Make sure you've added tests.
- Make sure you've added documentation where required.
- For new big features, make sure you've added an example in the examples repository (as a separate PR, linked to the main one).
- Please make it easier to review your PR:
- Keep changes as small as possible.
- Do not combine refactoring with changes in a single PR.
- Avoid reformatting existing code.
Guidelines on adding a new model integration
- Integration with Anthropic is a good example.
- Use the official SDK if available.
- If the official SDK is not available, use Retrofit and Gson to implement the client.
- Document the new integration here, here and here.
- Add an example to the examples repository, similar to this.
- Add a new module to the appropriate section of the BOM.
- It would be great if you could add a Spring Boot starter.
Guidelines on adding a new embedding store integration
- Integration with Chroma is a good example.
- Use the official SDK if available.
- If the official SDK is not available, use Retrofit and Gson to implement the client.
{IntegrationName}EmbeddingStoreIT
should extend fromEmbeddingStoreWithFilteringIT
orEmbeddingStoreIT
and pass all tests.- Document the new integration here, here and here.
- Add an example to the examples repository, similar to this.
- Add a new module to the appropriate section of the BOM.
- It would be great if you could add a Spring Boot starter.