Build an LLM app using LangChain
OpenAI, LangChain, and Streamlit in 18 lines of code
在本教程中,您将构建一个Streamlit LLM应用程序,该应用程序可以从用户提供的提示生成文本。这个Python应用程序将使用LangChain框架和Streamlit。完成后,您可以选择将应用程序部署到Streamlit Community Cloud。
本教程改编自Chanin Nantesanamat的博客文章:LangChain教程#1:用18行代码构建一个LLM驱动的应用。
Objectives
- 从最终用户那里获取一个OpenAI密钥。
- 验证用户的OpenAI密钥。
- 从用户那里获取一个文本提示。
- 使用用户的密钥验证OpenAI。
- 将用户的提示发送到OpenAI的API。
- 获取响应并显示它。
奖励:在Streamlit社区云上部署应用程序!
Prerequisites
- Python 3.9+
- Streamlit
- LangChain
- OpenAI API key
Setup coding environment
在您的IDE(集成编码环境)中,打开终端并安装以下两个Python库:
pip install streamlit langchain-openai
创建一个位于工作目录根目录的requirements.txt
文件并保存这些依赖项。这对于稍后将应用程序部署到Streamlit社区云是必要的。
streamlit
openai
langchain
Building the app
该应用程序只有18行代码:
import streamlit as st
from langchain_openai.chat_models import ChatOpenAI
st.title("🦜🔗 Quickstart App")
openai_api_key = st.sidebar.text_input("OpenAI API Key", type="password")
def generate_response(input_text):
model = ChatOpenAI(temperature=0.7, api_key=openai_api_key)
st.info(model.invoke(input_text))
with st.form("my_form"):
text = st.text_area(
"Enter text:",
"What are the three key pieces of advice for learning how to code?",
)
submitted = st.form_submit_button("Submit")
if not openai_api_key.startswith("sk-"):
st.warning("Please enter your OpenAI API key!", icon="⚠")
if submitted and openai_api_key.startswith("sk-"):
generate_response(text)
首先,创建一个新的Python文件并将其保存为streamlit_app.py
,放在你的工作目录的根目录下。
-
导入必要的Python库。
import streamlit as st from langchain_openai.chat_models import ChatOpenAI
-
使用
st.title
创建应用的标题。st.title("🦜🔗 Quickstart App")
-
为用户添加一个文本输入框,用于输入他们的OpenAI API密钥。
openai_api_key = st.sidebar.text_input("OpenAI API Key", type="password")
-
定义一个函数,使用用户的密钥对OpenAI API进行身份验证,发送提示,并获取AI生成的响应。此函数接受用户的提示作为参数,并使用
st.info
在蓝色框中显示AI生成的响应。def generate_response(input_text): model = ChatOpenAI(temperature=0.7, api_key=openai_api_key) st.info(model.invoke(input_text))
-
最后,使用
st.form()
创建一个文本框(st.text_area()
)用于用户输入。当用户点击Submit
时,generate-response()
函数会被调用,并将用户的输入作为参数传递。with st.form("my_form"): text = st.text_area( "输入文本:", "学习编程的三个关键建议是什么?", ) submitted = st.form_submit_button("提交") if not openai_api_key.startswith("sk-"): st.warning("请输入您的OpenAI API密钥!", icon="⚠") if submitted and openai_api_key.startswith("sk-"): generate_response(text)
-
记得保存你的文件!
-
返回到您的计算机终端以运行应用程序。
streamlit run streamlit_app.py
Deploying the app
要将应用程序部署到Streamlit Cloud,请按照以下步骤操作:
-
为应用程序创建一个GitHub仓库。您的仓库应包含两个文件:
your-repository/ ├── streamlit_app.py └── requirements.txt
-
前往Streamlit Community Cloud,从您的工作区点击
New app
按钮,然后指定仓库、分支和主文件路径。您还可以通过选择自定义子域来定制应用的URL。 -
点击
Deploy!
按钮。
您的应用程序现在将部署到Streamlit社区云,并且可以从世界各地访问!🌎
Conclusion
恭喜你用18行代码构建了一个基于LLM的Streamlit应用!🥳 你可以使用这个应用从你提供的任何提示中生成文本。该应用受限于OpenAI LLM的能力,但它仍然可以用于生成一些创意和有趣的文本。
我们希望您觉得本教程有帮助!查看更多示例以了解Streamlit和LLM的强大功能。💖
愉快的 Streamlit 使用!🎈
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。