diff --git a/docs/docs/getting-started/app-anatomy.md b/docs/docs/getting-started/app-anatomy.md index ed84683a9..2e8384035 100644 --- a/docs/docs/getting-started/app-anatomy.md +++ b/docs/docs/getting-started/app-anatomy.md @@ -20,7 +20,7 @@ The architecture of the Jan.ai application is designed to provide a seamless exp - The BackEnd serves as the brain of the application. It processes the information, performs computations, and manages the main logic of the system. :::info -For easy to understand, this is like an [OS (Operating System)](https://en.wikipedia.org/wiki/Operating_system) in the computer. +This is like an [OS (Operating System)](https://en.wikipedia.org/wiki/Operating_system) in the computer. ::: **FrontEnd:** @@ -93,4 +93,70 @@ These are modular components or extensions designed to enhance the application's 1. Input is provided by the user or an external source. 2. This input is broadcasted as an event into the **Broadcast event**. 3. The **BackEnd** processes the event. Depending on the event, it might interact with one or several Plugins. -4. Once processed, **Broadcast result** can be sent out asynchronously through multiple notifications via Notify action. \ No newline at end of file +4. Once processed, **Broadcast result** can be sent out asynchronously through multiple notifications via Notify action. + +## Jan workflow + +![Workflow](img/arch-flow.drawio.png) + +### Overview + +The architecture of the Jan.ai desktop application is structured into four primary modules: "Prompt Template," "Language Model," "Output Parser," and "Apps." Let's break down each module and understand its components. + +### Prompt Template + +This is where predefined templates are stored. It sets the format and structure for user interactions. It contains: + +- **Character's definition:** + +Definitions of various characters or entities that may be interacted with or invoked during user requests (e.g., name, personality, and communication style). + +- **Model's definition:** + +Definitions related to the different language models (e.g., objectives, capabilities, and constraints) + +- **Examples:** + +Sample inputs and outputs for guidance. If given good examples, LLM could enable basic reasoning or planning skills. + +- **Input:** + +The actual user query or request that is being processed. + +### Large Language Model + +This processes the input provided. + +- **Local models:** + +These are the downloaded models that reside within the system. They can process requests without the need to connect to external resources. + +- **OpenAI:** + +This will connect you with OpenAI API, allowing the application to utilize powerful models like GPT-3.5 and GPT-4. + +:::info +To use OpenAI models, you must have an OpenAI account and secret key. You can get your [OpenAI key](https://platform.openai.com/account/api-keys) here. +::: + +- **Custom Agents:** + +These are user-defined or third-party models that can be integrated into the Jan.ai system for specific tasks. + +### Output Parser + +Language models produce textual content. However, often, there's a need for more organized data instead of plain text. This is achieved using output parsers. + +- **Parser:** + +This component ensures that the output conforms to the desired structure and format, removing unwanted information or errors. + +### Apps + +This represents applications or extensions that can be integrated with Jan. + +- **Characters:** Characters or entities that can be utilized within the applications. + +- **Models:** Different Large Language Models, Large Multimodal Models, and Stable Diffusion models that the apps might use. + +- **RAG:** Represents a "Retrieval Augmented Generation" functionality, which helps in fetching relevant data and generating responses based on it. \ No newline at end of file diff --git a/docs/docs/getting-started/img/arch-flow.drawio.png b/docs/docs/getting-started/img/arch-flow.drawio.png new file mode 100644 index 000000000..f0cbea035 Binary files /dev/null and b/docs/docs/getting-started/img/arch-flow.drawio.png differ