# `gradio_promptweighting`
Simple component for creating prompt weighting for real-time generation.
## Installation
```bash
pip install gradio_promptweighting
```
## Usage
```python
import gradio as gr
from gradio_promptweighting import PromptWeighting
example = PromptWeighting().example_value()
def predict(input):
return (input, input)
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
prompt = PromptWeighting(
value=[
{"prompt": "a cat", "scale": 1.5},
{"prompt": "a dog", "scale": 1},
{"prompt": "a bird", "scale": 0.5},
],
step=0.001,
info="Please drag up or down to adjust the weight of the prompt.",
)
btn = gr.Button("Update Prompt")
with gr.Column():
text = gr.Textbox(
label="Prompt",
placeholder="",
)
prompt2 = PromptWeighting(min=0, max=10, step=0.001)
inputs = [prompt]
outputs = [text, prompt2]
btn.click(fn=predict, inputs=inputs, outputs=outputs, show_progress=False)
prompt.change(
fn=predict,
inputs=inputs,
outputs=outputs,
queue=False,
trigger_mode="always_last",
show_progress=False,
)
if __name__ == "__main__":
demo.launch()
```
## `PromptWeighting`
### Initialization
name | type | default | description |
---|---|---|---|
value |
```python str | dict | list | Callable | None ``` | None |
default text to provide in textbox. If callable, the function will be called whenever the app loads to set the initial value of the component. |
placeholder |
```python str | None ``` | None |
placeholder hint to provide behind textbox. |
label |
```python str | None ``` | None |
component name in interface. |
every |
```python float | None ``` | None |
If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute. |
show_label |
```python bool | None ``` | None |
if True, will display label. |
info |
```python str | None ``` | None |
None |
scale |
```python int | None ``` | None |
relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True. |
min_width |
```python int ``` | 160 |
minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first. |
interactive |
```python bool | None ``` | None |
if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output. |
visible |
```python bool ``` | True |
If False, component will be hidden. |
rtl |
```python bool ``` | False |
If True and `type` is "text", sets the direction of the text to right-to-left (cursor appears on the left of the text). Default is False, which renders cursor on the right. |
elem_id |
```python str | None ``` | None |
An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles. |
elem_classes |
```python list[str] | str | None ``` | None |
An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles. |
render |
```python bool ``` | True |
If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later. |
min |
```python float | None ``` | None |
None |
max |
```python float | None ``` | None |
None |
step |
```python float | None ``` | None |
None |