用Python5分鐘創(chuàng)建基于AI大模型的應(yīng)用程序(用python5分鐘創(chuàng)建基于ai大模型的應(yīng)用程序)
在這個(gè)數(shù)據(jù)驅(qū)動(dòng)創(chuàng)新的時(shí)代,創(chuàng)建利用大型語言模型 (LLM) 的強(qiáng)大應(yīng)用程序變得越來越重要。作為這一需求的證明,LangChain 和 Streamlit 最近的集成顯著簡化了構(gòu)建基于 LLM 的應(yīng)用程序的過程。這些開源庫相輔相成,為開發(fā)人員提供了強(qiáng)大的技術(shù)堆棧,用于構(gòu)建和共享數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序。
Streamlit和LangChain概述
Streamlit 是一個(gè)開源 Python 庫,可在幾分鐘內(nèi)將數(shù)據(jù)腳本轉(zhuǎn)換為可共享的 Web 應(yīng)用程序。另一方面,LangChain為開發(fā)者提供了一個(gè)將LLM與其他計(jì)算資源或知識(shí)源集成的平臺(tái)。這兩個(gè)庫都擁有強(qiáng)大的開源社區(qū)精神和“自帶電池”的理念,促進(jìn)應(yīng)用程序的快速迭代和交付。
使用 Streamlit 可視化 LLM 想法和行動(dòng)
Streamlit 和 LangChain 集成的主要目標(biāo)是簡化 LLM 代理思想和行動(dòng)的渲染和可視化。此功能使開發(fā)人員和最終用戶能夠清楚地了解代理從啟動(dòng)到最終響應(yīng)的流程。
這種可視化是使用 Streamlit 的回調(diào)處理程序?qū)崿F(xiàn)的。當(dāng)與 LLM 代理集成時(shí),回調(diào)處理程序以有組織、緊湊的擴(kuò)展器格式顯示代理的想法和工具輸入/輸出。
以下是一個(gè) Python 代碼片段,說明如何使用 Streamlit 和 LangChain 創(chuàng)建基于 LLM 的聊天與搜索應(yīng)用程序
from langchain.agents import initialize_agent, AgentTypefrom langchain.callbacks import StreamlitCallbackHandlerfrom langchain.chat_models import ChatOpenAIfrom langchain.tools import DuckDuckGoSearchRunimport streamlit as stst.set_page_config(page_title="LangChain: Chat with search", page_icon="")st.title(" LangChain: Chat with search")openai_api_key = st.sidebar.text_input("OpenAI API Key", type="password")if "messages" not in st.session_state: st.session_state["messages"] = [{"role": "assistant", "content": "How can I help you?"}]for msg in st.session_state.messages: st.chat_message(msg["role"]).write(msg["content"])if prompt := st.chat_input(placeholder="Who won the Women's U.S. Open in 2018?"): st.session_state.messages.append({"role": "user", "content": prompt}) st.chat_message("user").write(prompt) if not openai_api_key: st.info("Please add your OpenAI API key to continue.") st.stop() llm = ChatOpenAI(model_name="gpt-3.5-turbo", openai_api_key=openai_api_key, streaming=True) search_agent = initialize_agent( tools=[DuckDuckGoSearchRun(name="Search")], llm=llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, handle_parsing_errors=True, ) with st.chat_message("assistant"): st_cb = StreamlitCallbackHandler(st.container(), expand_new_thoughts=False) response = search_agent.run(st.session_state.messages, callbacks=[st_cb]) st.session_state.messages.append({"role": "assistant", "content": response}) st.write(response)
在此代碼中:
- 首先導(dǎo)入必要的庫和模塊。
- 該set_page_config()函數(shù)用于配置Streamlit應(yīng)用程序的頁面。
- OpenAI API 密鑰是從側(cè)邊欄文本輸入中捕獲的用戶輸入。
- 在 Streamlit 會(huì)話狀態(tài)下初始化消息列表以保存聊天消息。
- 會(huì)話狀態(tài)中的每條消息都使用 for 循環(huán)在 Streamlit 應(yīng)用程序中呈現(xiàn)。
- 如果聊天輸入字段中有用戶輸入,則會(huì)將其添加到會(huì)話狀態(tài)消息列表中,并初始化搜索代理。
- 搜索代理使用 Streamlit 回調(diào)處理程序運(yùn)行,并將結(jié)果寫回 Streamlit 應(yīng)用程序。
這種方法允許高級(jí)定制和易于使用。
展望未來:Streamlit 和 LangChain 的未來
此次合作僅處于初始階段,團(tuán)隊(duì)有雄心勃勃的計(jì)劃來擴(kuò)展 Streamlit 和 LangChain 集成的功能和范圍。管道中的增強(qiáng)功能包括對其他鏈類型(如 VectorStore、SQLChain 和簡單流)的支持、改進(jìn)的 UI/UX 以及更輕松地集成 LangChain 原語(如 Memory 和 Messages)與 Streamlit chat 和 session_state。
Streamlit 和 LangChain 不僅徹底改變了開發(fā)人員創(chuàng)建利用大型語言模型的應(yīng)用程序的方式,而且還不斷完善其工具,以確保開發(fā)人員和最終用戶獲得更好的體驗(yàn)。LangChain 和 Streamlit 的技術(shù)堆棧是您在幾分鐘內(nèi)創(chuàng)建基于 LLM 的演示所需的工具包。