摘要
本文介紹了 LangGraph Studio,一個專為 AI 代理應用程式開發設計的整合開發環境 (IDE)。文章首先介紹了 LangGraph Studio 的核心特色,包括可視化代理圖、即時互動和除錯與迭代。接著,文章詳細說明了使用 LangGraph Studio 的準備工作,包括系統需求、必要軟體和開發環境。文章還提供了一個步驟式的教學,指導讀者如何設定和使用 LangGraph Studio,包含建立檔案結構、安裝套件、撰寫 Agent 程式碼、配置 LangGraph Studio 設定、導入專案和與 AI 代理互動。文章進一步揭示了 LangGraph Studio 的運作原理,包含 LangGraph UI、LangChain/LangGraph API 和 Postgres 資料庫三個主要組件的協作。文章最後以一個實戰案例,展示了如何利用 LangGraph Studio 來打造智能客服資訊收集系統,並說明了從 Colab 概念驗證轉向資料夾結構的設計理念以及模組化設計的優勢。總之,本文旨在幫助讀者深入了解 LangGraph Studio 的功能、使用方法和運作原理,並引導讀者將其應用於實際的 AI 代理應用程式開發
在人工智慧快速發展的今日,大型語言模型(Large Language Models,LLMs)的應用已成為許多開發者關注的焦點。而在這個趨勢中,LangChain 團隊推出的 LangGraph Studio 無疑是一個令人興奮的新工具。本文將深入探討 LangGraph Studio 的特色、使用方法以及其運作原理,幫助您快速掌握這個強大的 AI 開發工具。
LangGraph Studio 是一款專為 AI 代理應用程式開發設計的整合開發環境(IDE)。它的目標是簡化 LLM 應用的開發流程,為開發者提供直觀的可視化介面、即時互動功能和強大的除錯工具,大幅提升開發 AI 代理應用的效率。
可視化代理圖
即時互動
除錯與迭代
這些特色使 LangGraph Studio 成為開發 AI 代理應用的理想選擇,特別適合需要複雜邏輯和長時間執行的專案。
在開始使用 LangGraph Studio 之前,您需要注意以下幾點:
小提醒:LangGraph Studio 會利用 Docker 將您的專案打包成前端網站,並在背後執行一個 API 伺服器處理查詢等操作。
要開始使用 LangGraph Studio,您需要準備以下幾個關鍵元素:
讓我們一步步來看如何設置和使用 LangGraph Studio。
首先,您需要建立以下檔案結構來配置您的應用程式:
<my-app>/
|-- agent.py # LangGraph Agent 程式碼
|-- requirements.txt # 專案所需的 Python 套件
|-- langgraph.json # LangGraph 設定檔
|-- .env # 包含 API 金鑰的環境檔案
提醒:可以在官方 LangGraph Cloud 文件中找到每個檔案的用途
在 requirements.txt
檔案中,列出您的專案所需的套件:
langgraph
langchain_anthropic
tavily-python
langchain_community
在 agent.py
檔案中,您需要定義您的 AI 代理。以下是一個簡單的範例:
from langgraph.graph import StateGraph
# 定義狀態和代理邏輯
State = ... # 根據您的需求定義狀態
chatbot = ... # 實現您的聊天機器人邏輯
# 建立圖形
graph_builder = StateGraph(State)
graph_builder.add_node("chatbot", chatbot)
graph_builder.set_entry_point("chatbot")
graph_builder.set_finish_point("chatbot")
graph = graph_builder.compile()
在 langgraph.json 檔案中,設置 LangGraph Studio 的配置:
{
"python_version": "3.11",
"dockerfile_lines": [],
"dependencies": [
"."
],
"graphs": {
"agent": "./graph.py:graph"
},
"env": ".env"
}
這個設定檔指定了 Python 版本、依賴項、圖形定義的位置,以及環境變數檔案的位置。
建置完成後,您就可以在 LangGraph Studio 的介面中與您的 AI 代理進行互動了。您可以輸入訊息,觀察代理的回應,並根據需要調整代理的行為。
至此你已經可以使用 LangGraph Studio 來調試你的 Graph 結構,官方已經有範例了,大家可以跟著做。
為了一致性,我也在收錄在此次比賽 Repo 當中,大家可以下載來使用。
這三個組件協同工作,為開發者提供一個強大而靈活的 AI 代理開發環境。
進行玩上面操作的朋友,肯定會有個怪怪的感覺,怎麼之前操作 LangGraph 教學都是 colab ,現在突然要轉成資料夾進行操作?這其實也是 AI 發展中遇到的難題,概念驗證以及商務實作的編輯方式不同,為此這個章節用 收集客戶資訊
的實戰案例,帶大家從 Colab 開發,轉換到 project-based 資料集進行調整,每一步驟手把手帶。
開發客服機器人時,會遇到一個狀況是,系統需要確認使用者的個人身份驗證是否正確。 這時候使用者需要掏出他的名稱、電話、身分證字號等,但事情沒有憨人想的這麼簡單,有時候只有填寫部分資訊,例如說只有給電話號碼而已。這個在程序上很麻煩,所以需要使用者反覆填寫一直到,客服機器人確認可行之後,才放行離開。
這次要解決的是客戶資訊收集,為此我們建立兩個節點,一個是客服節點,專門詢問使用者的個人資訊,另一個則是收集資訊節點,負責進行資料邏輯處理。
運作流程如下:
使用者資訊
class RequiredInformation(BaseModel):
provided_full_name: Optional[str] = Field(
description="the provided full name of the user"
)
provided_mobile: Optional[str] = Field(
description="the provided mobile number of the user"
)
provided_id_4_digits: Optional[int] = Field(
description="the provided user last 4 digits of id card"
)
Graph 中狀態管理
class AssistantGraphState(TypedDict):
user_question: str
required_information: RequiredInformation
messages: Annotated[list, add_messages]
測試客服節點
system = """你是 AI 客服助理。你的任務是收集必要的用戶資訊。請遵循以下原則:
1. 保持禮貌和專業,使用適當的敬語。
2. 如果用戶詢問的資訊不完整,請適當地要求補充。
3. 在收集用戶資訊時,請確保隱私和安全。
4. 如果無法回答某個問題,請誠實地表示,並提供其他可能的幫助方式。
assistant_prompt = ChatPromptTemplate.from_messages(
[
("system", system),
(
"human",
"User question: {user_question}\n"
"Chat history: {messages}\n"
"\n\n What the user have provided so far {provided_required_information} \n\n"
),
]
)
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0.7)
get_information_chain = assistant_prompt | llm
res = get_information_chain.invoke(
{
"user_question": "我想購買高鐵車票",
"provided_required_information": {},
"messages": [],
}
)
測試用戶資訊收集邏輯
collect_info_system = """你是 AI 客服助理。你的任務是收集必要的用戶資訊。請遵循以下原則:
1. 保持禮貌和專業,使用適當的敬語。
2. 如果用戶詢問的資訊不完整,請適當地要求補充。
3. 在收集用戶資訊時,請確保隱私和安全。
4. 如果無法回答某個問題,請誠實地表示,並提供其他可能的幫助方式。
需要收集的資訊包括:
class RequiredInformation(BaseModel):
provided_full_name: Optional[str] = Field(
description="the provided full name of the user"
)
provided_mobile: Optional[str] = Field(
description="the provided mobile number of the user"
)
provided_id_4_digits: Optional[int] = Field(
description="the provided user last 4 digits of id card"
)
result = collect_info_chain.invoke({
"user_question": user_input,
"provided_required_information": collected_info,
"messages": [],
})
為求回應友善,追加個回應用節點
response_builder_system = """
你是台灣高鐵的AI客服助理。你的任務是總結對話內容,並提供一個清晰、專業的回應給用戶。請遵循以下原則:
1. 總結已收集的用戶資訊(如果有的話)。
2. 簡要回顧對話中討論的主要問題或請求。
3. 提供任何相關的後續步驟或建議。
4. 使用禮貌和專業的語氣。
5. 如果有任何未完成的事項,請提醒用戶。
請確保你的回應簡潔但全面,並符合高鐵客服的專業標準。
"""
response_builder_prompt = ChatPromptTemplate.from_messages([
("system", response_builder_system),
("human", "用戶資訊:{user_info}\n對話歷史:{chat_history}\n請提供一個總結性的回應。")
])
summary_response = response_chain.invoke({
"user_info": user_info,
"chat_history": chat_history_str
})
init_state = AssistantGraphState(
user_question="我想訂購高鐵票",
required_information=RequiredInformation(),
messages=[],
)
for output in app.stream(
init_state,
config={"configurable": {"thread_id": 888}}
):
for key, value in output.items():
if "messages" in value:
try:
last_msg = value["messages"][-1]
last_msg.pretty_print()
except Exception as e:
print(f"last_msg:{last_msg}")
接下來,我們建立資料夾來把 LangGRaph 當中的結構進行編列,建立新資料夾並按照以下內容編排
當中最重要的改變為將 GRaph 當中節點名稱用 consts 固定,閱讀上也比較方便
剩下就是把是把狀態、節點、邊個別獨立出來做管理
從 Colab 筆記本轉向這種結構化的資料夾方式,標誌著我們的專案從實驗階段邁向了生產就緒的狀態。這種轉變不僅僅是形式上的調整,更是一種思維方式的進化。
讓我們思考一下:在 Colab 中,我們可能將所有程式碼都擠在一個長長的筆記本裡。這對於快速實驗很方便,但隨著專案的成長,它很快就會變得難以管理。想像一下,當你需要在數百行程式碼中尋找某個特定函數時的挫折感!
相比之下,這種資料夾結構為每一塊功能提供了一個專屬的家。
需要修改對話邏輯?直接去 nodes/
目錄。
想調整轉換條件?edges/
文件夾等著你。
這種組織方式不僅讓開發更高效,也為團隊協作鋪平了道路。
更重要的是,這種結構反映了軟體工程的最佳實踐。模組化設計、關注點分離、配置與程式碼分離等原則,都在這個結構中得到了體現。這不僅讓我們的程式碼更容易維護和擴展,也為將來可能的重構或功能添加做好了準備。
當你習慣了這種結構,你會發現自己的思維方式也隨之改變。你會開始更系統地思考問題,將大型任務自然地分解為可管理的小模組。這是從業餘愛好者到專業開發者的重要一步。
在建立了結構化的資料夾系統後,下一個邏輯步驟是將這個靜態結構轉化為動態的、可交互的系統。這就是 LangGraph Studio 的主要應用場景。作為官方提供的本地開發和測試工具,LangGraph Studio 為 LangGraph 專案的開發提供了重要的支持。
使用 LangGraph Studio,你可以直觀地可視化整個圖結構。每個在 nodes/ 目錄下定義的節點,在 Studio 中都變成了可以拖拽、連接的視覺元素。edges/conditional_edges.py 中定義的條件轉換,在這裡可以通過簡單的點擊就能設置和調整。這種視覺化不僅讓複雜的邏輯變得一目了然,還大大降低了調試的難度。
LangGraph Studio 為 AI 代理應用開發帶來了革命性的變化。透過其直觀的介面、即時互動功能和強大的除錯工具,開發者可以更快速、更有效地構建複雜的 AI 應用。無論您是經驗豐富的 AI 開發者,還是剛踏入這個領域的新手,LangGraph Studio 都能為您的開發工作帶來顯著的提升。
總的來說,LangGraph Studio 是連接我們精心設計的資料夾結構和最終實現功能的關鍵橋樑。它讓抽象的代碼結構變成了可以觸摸、可以調整的實體,極大地提升了開發體驗和效率。
1.LangGraph Studio Quick Start Guide
2.LangChain 官方文件