diff --git a/docs/framework/ai-module.mdx b/docs/framework/ai-module.mdx index 3a74f48d3..b156bb340 100644 --- a/docs/framework/ai-module.mdx +++ b/docs/framework/ai-module.mdx @@ -20,7 +20,7 @@ You can manage your environment variables using methods that best suit your setu Furthermore, when deploying an application with `writer deploy`, the `WRITER_API_KEY` environment variable is automatically configured with the API key specified during the deployment process. -## Conversation class +## Chat completion with the Conversation class The `Conversation` class manages LLM communications within a chat framework, storing the conversation history and handling the interactions. ```python @@ -74,13 +74,7 @@ conversation += {"role": "user", "content": "Can you break down the assets secti conversation.add(role="user", content="How should I interpret the equity section?") ``` -Addition to `Conversation` only works against `dict` objects that contain `"role"` and `"content"` items. Providing a `"chunk": True` flag into the object will merge it against the last message - appending `"content"` and replacing other values. - ### Completing and streaming Conversations - -When utilizing the `stream_complete` feature, the initial chunk of data returned by the stream is not specifically marked as a "chunk." This is intentional, allowing for the seamless integration of this first piece into the conversation history when appended using the + operator. - - The `complete` and `stream_complete` methods facilitate interaction with the LLM based on the accumulated messages and configuration. These methods execute calls to generate responses and return them in the form of a message object, but do not alter the conversation's `messages` list, allowing you to validate or modify the output before deciding to add it to the history. @@ -105,8 +99,8 @@ Instance-wide configuration parameters can be complemented or overriden on indiv response = conversation.complete(config={'max_tokens': 200, 'temperature': 0.5}) ``` -## Text completions without a conversation state -These `complete` and `stream_complete` methods are designed for one-off text completions without the need to manage a conversation state. They return the model's response as a string. Each function accepts a `config` dictionary allowing call-specific configurations. +## Text generation without a conversation state +These `complete` and `stream_complete` methods are designed for one-off text generation without the need to manage a conversation state. They return the model's response as a string. Each function accepts a `config` dictionary allowing call-specific configurations. ```python complete diff --git a/docs/framework/backend-driven-ui.mdx b/docs/framework/backend-driven-ui.mdx index c058baa2c..a1d94328b 100644 --- a/docs/framework/backend-driven-ui.mdx +++ b/docs/framework/backend-driven-ui.mdx @@ -147,7 +147,7 @@ In addition to `content`, a set of fields which is specific to the component typ - **`position: int`**: Determines the display order of the component in relation to its siblings. Position `0` means that the component is the first child of its parent. - Position `-2` is used for components – such as [sidebars](https://dev.writer.com/components/sidebar) – that have a specific reserved position not related to their siblings. + Position `-2` is used for components – such as [sidebars](https://dev.writer.com/components/sidebar) – that have a specific reserved position not related to their siblings. ```python ui.Text( {"text": "Hello Parent, I'm your first child!"}, @@ -170,7 +170,7 @@ In addition to `content`, a set of fields which is specific to the component typ ui.Text({"text": "My visibility depends on the @{my_var}!"}, visible="my_var") ``` -- **`handlers: dict[str, callable]`**: Attaches [event handlers](https://dev.writer.com/framework/event-handlersl) to the component. Each dictionary key represents an event, and its value is the corresponding handler.: +- **`handlers: dict[str, callable]`**: Attaches [event handlers](https://dev.writer.com/framework/event-handlers) to the component. Each dictionary key represents an event, and its value is the corresponding handler.: ```python def increment(state): state["counter"] += 1 diff --git a/docs/framework/custom-server.mdx b/docs/framework/custom-server.mdx index 6129a62dd..a912d971b 100644 --- a/docs/framework/custom-server.mdx +++ b/docs/framework/custom-server.mdx @@ -29,7 +29,7 @@ def hello(): return "1" ``` -Use `server_setup.py` in `edit` mode. If you want to use in `edit` mode, you can launch `writer edit --enable-server-setup `. +`server_setup.py` is disabled by default on edit mode. If you want to use in `edit` mode, you can launch `writer edit --enable-server-setup `. ## Implement custom server diff --git a/docs/framework/deploy-with-docker.mdx b/docs/framework/deploy-with-docker.mdx index 8cdd92b7a..01358def5 100644 --- a/docs/framework/deploy-with-docker.mdx +++ b/docs/framework/deploy-with-docker.mdx @@ -47,7 +47,7 @@ If you're a Docker expert, feel free to work on your own `Dockerfile`. Framework To build the image, use `docker build . -t ` followed by an image tag, which you're free to choose and will locally identify your image. ```sh -docker build . -t my_writer_app +docker build . -t my_framework_app ``` @@ -76,7 +76,7 @@ docker push my_user/my_writer_app:latest If your image is public, anyone can now run the following command and start the app. It's important to bind the port to a port in the host machine. The command below binds port 8080 in the Docker image to port 8080 in the host. ```sh -docker run -p 8080:8080 my_user/my_writer_app +docker run -p 8080:8080 my_user/my_framework_app ``` Go on your browser to [http://localhost:8080](http://localhost:8080) to check everything is working as expected. diff --git a/docs/framework/frontend-scripts.mdx b/docs/framework/frontend-scripts.mdx index 7a6002a31..91ac3525f 100644 --- a/docs/framework/frontend-scripts.mdx +++ b/docs/framework/frontend-scripts.mdx @@ -90,7 +90,6 @@ initial_state.import_script("lodash", "https://cdnjs.cloudflare.com/ajax/libs/lo Effectively using Framework's core can be challenging and will likely entail reading its [source code](https://github.com/writer/writer-framework/blob/master/ui/src/core/index.ts). Furthermore, it's considered an internal capability rather than a public API, so it may unexpectedly change between releases. - You can access Framework's front-end core via `globalThis.core`, unlocking all sorts of functionality. Notably, you can use `getUserState()` to get values from state. ```js diff --git a/docs/framework/images/429.png b/docs/framework/images/429.png new file mode 100644 index 000000000..9f95669d1 Binary files /dev/null and b/docs/framework/images/429.png differ