diff --git a/README.md b/README.md index 21a4619ab658..c5bf7bec6d6f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ⚑ Building applications with LLMs through composability ⚑ [![CI](https://github.com/langchain-ai/langchainjs/actions/workflows/ci.yml/badge.svg)](https://github.com/langchain-ai/langchainjs/actions/workflows/ci.yml) ![npm](https://img.shields.io/npm/dw/langchain) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchainai.svg?style=social&label=Follow%20%40LangChainAI)](https://twitter.com/langchainai) [![](https://dcbadge.vercel.app/api/server/6adMQxSpJS?compact=true&style=flat)](https://discord.gg/6adMQxSpJS) [![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/langchain-ai/langchainjs) -[](https://codespaces.new/hwchase17/langchainjs) +[](https://codespaces.new/langchain-ai/langchainjs) Looking for the Python version? Check out [LangChain](https://github.com/langchain-ai/langchain). diff --git a/langchain-core/README.md b/langchain-core/README.md index 508171fb6594..d885a1acddc1 100644 --- a/langchain-core/README.md +++ b/langchain-core/README.md @@ -1,21 +1,24 @@ -# πŸ¦œοΈπŸ”— @langchain/core +# 🦜🍎️ @langchain/core -:::note -This package is experimental at the moment and may change. -::: +[![CI](https://github.com/langchain-ai/langchainjs/actions/workflows/ci.yml/badge.svg)](https://github.com/langchain-ai/langchainjs/actions/workflows/ci.yml) ![npm](https://img.shields.io/npm/dw/@langchain/core) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchainai.svg?style=social&label=Follow%20%40LangChainAI)](https://twitter.com/langchainai) [![](https://dcbadge.vercel.app/api/server/6adMQxSpJS?compact=true&style=flat)](https://discord.gg/6adMQxSpJS) `@langchain/core` contains the core abstractions and schemas of LangChain.js, including base classes for language models, chat models, vectorstores, retrievers, and runnables. -## πŸ”§ Usage - -Install core like this: +## πŸ’Ύ Quick Install ```bash $ yarn add @langchain/core ``` -Then, you can install other provider-specific packages like this: +## πŸ€” What is this? + +`@langchain/core` contains the base abstractions that power the rest of the LangChain ecosystem. +These abstractions are designed to be as modular and simple as possible. +Examples of these abstractions include those for language models, document loaders, embedding models, vectorstores, retrievers, and more. +The benefit of having these abstractions is that any provider can implement the required interface and then easily be used in the rest of the LangChain ecosystem. + +For example, you can install other provider-specific packages like this: ```bash $ yarn add @langchain/openai @@ -66,11 +69,44 @@ leigh ``` Note that for compatibility, all used LangChain packages (including the base LangChain package, which itself depends on core!) must share the same version of `@langchain/core`. -This means that you may need to install a specific version of `@langchain/core` that matches the dependencies of your used packages. +This means that you may need to install/resolve a specific version of `@langchain/core` that matches the dependencies of your used packages. + +## πŸ”— What is LangChain Expression Language? + +LangChain Core also contains LangChain Expression Language, or LCEL, a runtime that allows users to compose arbitrary sequences together and get several benefits that are important when building LLM applications. +We call these sequences β€œrunnables”. + +All runnables expose the same interface with single-invocation, batch, streaming and async methods. +This design is useful because it is not enough to have a single sync interface when building an LLM application. +Batch is needed for efficient processing of many inputs. +Streaming (and streaming of intermediate steps) is needed to show the user that progress is being made. +Async interfaces are nice when moving into production. +Rather than having to write multiple implementations for all of those, LCEL allows you to write a runnable once and invoke it in many different ways. + +For more check out the [LCEL docs](https://js.langchain.com/docs/expression_language/). + +![LangChain Stack](../docs/core_docs/static/img/langchain_stack.png) + +## πŸ“• Releases & Versioning + +`@langchain/core` is currently on version `0.1.x`. + +As `@langchain/core` contains the base abstractions and runtime for the whole LangChain ecosystem, we will communicate any breaking changes with advance notice and version bumps. The exception for this is anything in `@langchain/core/beta`. The reason for `@langchain/core/beta` is that given the rate of change of the field, being able to move quickly is still a priority, and this module is our attempt to do so. + +Minor version increases will occur for: + +- Breaking changes for any public interfaces NOT in `@langchain/core/beta` + +Patch version increases will occur for: + +- Bug fixes +- New features +- Any changes to private interfaces +- Any changes to `@langchain/core/beta` ## πŸ“¦ Creating your own package -Other LangChain packages should add this package as a dependency and extend the classes within. +Other LangChain packages should add this package as a dependency and extend the classes within. For an example, see the [@langchain/anthropic](https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-anthropic) in this repo. Because all used packages must share the same version of core, we suggest using a tilde dependency to allow for different (backwards-compatible) patch versions: @@ -92,8 +128,6 @@ Because all used packages must share the same version of core, we suggest using This recommendation will change to a caret once a major version (1.x.x) release has occurred. -API reference docs for core are in progress. For now we recommend looking directly at the source code to find the necessary abstractions for your use case. - We suggest making all packages cross-compatible with ESM and CJS using a build step like the one in [@langchain/anthropic](https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-anthropic), then running `yarn build` before running `npm publish`. diff --git a/libs/langchain-community/README.md b/libs/langchain-community/README.md new file mode 100644 index 000000000000..1547d713efca --- /dev/null +++ b/libs/langchain-community/README.md @@ -0,0 +1,27 @@ +# πŸ¦œοΈπŸ§‘β€πŸ€β€πŸ§‘ LangChain Community + +[![CI](https://github.com/langchain-ai/langchainjs/actions/workflows/ci.yml/badge.svg)](https://github.com/langchain-ai/langchainjs/actions/workflows/ci.yml) ![npm](https://img.shields.io/npm/dw/@langchain/community) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchainai.svg?style=social&label=Follow%20%40LangChainAI)](https://twitter.com/langchainai) [![](https://dcbadge.vercel.app/api/server/6adMQxSpJS?compact=true&style=flat)](https://discord.gg/6adMQxSpJS) + +## Quick Install + +```bash +$ yarn add @langchain/community +``` + +## πŸ€” What is this? + +LangChain Community contains third-party integrations that implement the base interfaces defined in LangChain Core, making them ready-to-use in any LangChain application. + +![LangChain Stack](../../docs/core_docs/static/img/langchain_stack.png) + +## πŸ“• Releases & Versioning + +`@langchain/community` is currently on version `0.0.x` + +All changes will be accompanied by a patch version increase. + +## πŸ’ Contributing + +As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation. + +For detailed information on how to contribute, see [here](../../CONTRIBUTING.md). \ No newline at end of file