Pynecone,一個神奇的 Python 庫
作者:老朱2000
Pynecone 是一個全棧 Python 框架,允許開發者通過簡單的 Python 代碼構建現代化的 Web 應用。
Pynecone 是一個全棧 Python 框架,允許開發者通過簡單的 Python 代碼構建現代化的 Web 應用。
一、核心特點
- 全棧開發:后端邏輯和前端 UI 均使用 Python 構建,無需學習 JavaScript。
- 狀態管理:支持應用狀態的自動同步和更新,狀態變化后前端會自動重新渲染。
- 組件化開發:提供一系列開箱即用的 UI 組件(如 button、text、input),并支持嵌套組合。
- 動態交互:通過事件綁定(如 on_click 和 on_change),輕松實現動態應用。
- 多頁面支持:通過 add_page 方法,可以為應用定義多個頁面。
- 部署方便 :提供靜態導出功能,生成的應用可以直接部署到任意靜態服務器或平臺。
二、安裝
pip install pynecone
三、示例代碼
讓我們使用 DeepSeek構建一個用于文本生成的用戶界面。為了簡單起見,我們使用 DeepSeek API,但你可以靈活地將其替換為本地運行的機器學習模型。
1. 配置管理
pip install python-dotenv
創建.env文件,存儲deepseek的Secret Key
# .env
DEEPSEEK_API_KEY="your_api_key_here"
DEEPSEEK_ENDPOINT=https://api.deepseek.com
2. 引用DeepSeek配置
from dotenv import load_dotenv
load_dotenv()
3. 初始化項目
執行init命令初始化項目:
pc init
4. 搭建界面
在生成的reflex1目錄下的文件中操作界面和事件綁定:
def index():
return pc.container(
pc.vstack(
pc.heading("python學習助手", size="2xl"),
pc.text_area(
placeholder="請輸入提示詞...",
on_blur=State.set_prompt,
width="100%",
min_height="100px",
),
pc.button(
"提交查詢",
on_click=State.handle_submit,
is_loading=State.is_loading,
width="100%",
color_scheme="blue",
),
pc.divider(),
pc.cond(
State.error != "",
pc.alert(
pc.alert_icon(),
pc.alert_title(State.error),
status="error",
),
),
pc.cond(
State.response != "",
pc.box(
pc.text("響應內容:"),
pc.card(
pc.markdown(State.response),
width="100%",
padding="1em",
),
width="100%",
),
),
spacing="1.5em",
width="100%",
max_width="800px",
padding="2em",
),
padding_top="5%",
)
5. 綁定事件
通過openai進行模型調用:
pip install openai
按鈕事件handle_submit如下:
class State(pc.State):
prompt: str = ""
response: str = ""
is_loading: bool = False
error: str = ""
asyncdef handle_submit(self):
self.is_loading = True
self.error = ""
try:
client = OpenAI(api_key=os.getenv('DEEPSEEK_API_KEY'), base_url=os.getenv('DEEPSEEK_ENDPOINT'))
role_user = "如何學習Python"
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": role_user},
],
stream=False
)
self.response = response.choices[0].message.content
except Exception as e:
self.error = f"請求失敗: {str(e)}"
self.is_loading = False
6. 創建應用及路由
app = pc.App(state=State)
app.add_page(index, title="python學習助手")
app.compile()
7. 運行及效果
通過下面命令運行程序:
pc run
效果如下:
責任編輯:趙寧寧
來源:
程序員老朱