|
1 gadu atpakaļ | |
---|---|---|
.. | ||
README.md | 1 gadu atpakaļ |
+ ¿Buscas a Pynecone? Estas en el repositorio correcto. Pynecone ha sido renomabrado a Reflex. +
23007ec6
)](https://reflex.dev/docs/getting-started/introduction)
[](https://discord.gg/T5WSbC2YtQ)
Abre un terminal e instala reflex (Requiere Python 3.7+):
pip install reflex
Al instalar reflex
tambien se instalará la herramienta de linea de comandos reflex
.
Comprueba que la instalación fué exitosa creando un nuevo proyecto. (Reemplaza my_app_name
con el nombre de tu proyecto):
mkdir my_app_name
cd my_app_name
reflex init
Esto inicializará la plantilla de la aplicación en tu nuevo directorio.
Puedes iniciar la aplicación en modo desarrollador:
reflex run
You should see your app running at http://localhost:3000.
Now you can modify the source code in my_app_name/my_app_name.py
. Reflex has fast refreshes so you can see your changes instantly when you save your code.
Miremos un ejemplo: crear un UI de generación de imágenes usando DALL·E. Para simplicidad, usaremos el API de OpenAI , pero también pudes usar un modelo ML local.
Aqui esta el codigo completo para crear esto. ¡Todo esta hecho un solo archivo de Python!
import reflex as rx
import openai
openai.api_key = "YOUR_API_KEY"
class State(rx.State):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
def get_image(self):
"""Get the image from the prompt."""
if self.prompt == "":
return rx.window_alert("Prompt Empty")
self.processing, self.complete = True, False
yield
response = openai.Image.create(prompt=self.prompt, n=1, size="1024x1024")
self.image_url = response["data"][0]["url"]
self.processing, self.complete = False, True
def index():
return rx.center(
rx.vstack(
rx.heading("DALL·E"),
rx.input(placeholder="Enter a prompt", on_blur=State.set_prompt),
rx.button(
"Generate Image",
on_click=State.get_image,
is_loading=State.processing,
width="100%",
),
rx.cond(
State.complete,
rx.image(
src=State.image_url,
height="25em",
width="25em",
)
),
padding="2em",
shadow="lg",
border_radius="lg",
),
width="100%",
height="100vh",
)
# Add state and page to the app.
app = rx.App()
app.add_page(index, title="reflex:DALL·E")
app.compile()
Comenzemos con el interfaz de usario (UI).
def index():
return rx.center(
...
)
Esta función index
define el frontend de la aplicación.
Usamos diferentes componentes como center
, vstack
, input
, y button
para crear el frontend. Los componentes pueden ser anidados dentro de cada uno para crear un disposición complejo. Tambien puedes usar keyword args para estilizarlos con el poder completo de CSS.
Reflex viene con mas de 60+ componentes incorporados para ayudarte comenzar. Continuamos agregando mas componentes, y es facil de crear tus propios componentes.
Reflex representa tu UI com una función de tu estado (State).
class State(rx.State):
"""The app state."""
prompt = ""
image_url = ""
processing = False
complete = False
El estado (state) define todas las variables (vars) en una aplicación que pueden cambiar y las funciones que las cambian.
Aquí el estado se compone de un prompt
y de un image_url
. También están los booleanos processing
y complete
para poder indicar cuándo mostrar el progreso circular y la imagen.
def get_image(self):
"""Get the image from the prompt."""
if self.prompt == "":
return rx.window_alert("Prompt Empty")
self.processing, self.complete = True, False
yield
response = openai.Image.create(prompt=self.prompt, n=1, size="1024x1024")
self.image_url = response["data"][0]["url"]
self.processing, self.complete = False, True
Dentro del estado, definos funciones que se llaman 'event handlers' que cambian los 'state vars'. Event handlers son la manera que podemos modificar el 'state' en Reflex. Pueden ser activadas en respuesta a las acciones del usuario, como seleccionando un botón or escribiendo dentro de un 'text box'. Estas acciones se llaman 'events'.
Nuestra aplicación DALL·E. tiene un event handler, get_image
que recibe esta imagen del OpenAI API. Usando yield
en medio de un event handler causara que el UI se actualize. Por lo demás, el UI se actualizara al fin de el event handler.
Al fin, vamos a definir nuestro app.
app = rx.App()
Agregamos una página desde la raíz (root) de la aplicación hasta al componente de índice. También agregaremos un título que aparece en la pestaña de vista previa de la página o en la pestaña del navegador web.
app.add_page(index, title="DALL-E")
app.compile()
Puedes crear un app con multiples paginas al agregar mas paginas como esta.
Reflex lanzo en Diciembre 2022 con el nombre Pynecone.
Desde Julio 2023, estamos en el estatus de Beta Publica.
¡Reflex tiene nuevos lanzamientos y funciones cada semana! Asedurate de darnos una :star: estrella y :eyes: revisa este repositorio para estar al día.
¡Agradecemos contribuciones de cualquier tamaño! Abajo hay algunas buenas formas de comenzar en la comunidad Reflex.
Buscamos colaboradores, sin importar su nivel de habilidad o experiencia.
Reflex es de código abierto y tiene la licencia Apache License 2.0.