偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Django和LangGraph構(gòu)建一個對話式AI應(yīng)用程序

譯文 精選
人工智能
我們先介紹簡單的搭建,包括使用Pipenv安裝依賴項,并克隆GitHub代碼庫。然后,我們將使用LangGraph定義聊天機器人的邏輯,圍繞它構(gòu)建一個基于Django的API,并連接一個基本的前端以便與其聯(lián)系。

譯者 | 布加迪

審校 | 重樓

每個人都見過聊天機器人的實際應(yīng)用,有些令人印象深刻,有些令人厭煩。然而,如果你可以創(chuàng)建一個真正智能、組織良好且易于與你自己的應(yīng)用程序集成的聊天機器人,會怎樣呢?我們在本文中將使用兩個強大的工具從零開始構(gòu)建一個聊天機器人:

  • 除了LLM外,LangGraph 可以幫助管理井然有序的多步驟工作流程。
  • 聊天機器人可以使用Django(一種可擴展且簡潔的Web平臺)以API的形式公開。

我們先介紹簡單的搭建,包括使用Pipenv安裝依賴項,并克隆GitHub代碼庫。然后,我們將使用LangGraph定義聊天機器人的邏輯,圍繞它構(gòu)建一個基于Django的API,并連接一個基本的前端以便與其聯(lián)系。

無論你想了解LangGraph如何與實際后端協(xié)同工作,還是想構(gòu)建一個簡單的聊天機器人,你都來對地方了。

快速入門:克隆并搭建項目

首先,克隆項目并搭建環(huán)境。確保你的系統(tǒng)上已安裝Python 3.12和Pipenv。如果沒有,可以使用以下命令安裝pipenv:

pip install pipenv

現(xiàn)在,克隆代碼庫并進入項目文件夾:

git clone https://github.com/Badribn0612/chatbot_django_langgraph.git
cd chatbot_django_langgraph

現(xiàn)在不妨使用Pipenv安裝所有依賴項。

pipenv install

注意:如果你收到錯誤消息,提示你的系統(tǒng)中沒有Python 3.12,請使用以下命令:

pipenv --python path/to/python
pipenv install

要知道Python的路徑,你可以使用以下命令:

which python (linux and windows) 
which python3 (mac)

要激活此環(huán)境,請使用以下命令:

pipenv shell

鑒于我們的需求已滿足,接下來設(shè)置環(huán)境變量。使用以下命令創(chuàng)建一個.env 文件。

touch .env

將你的API密鑰添加到.env 文件。

# Google Gemini AI
GOOGLE_API_KEY=your_google_api_key_here
# Groq
GROQ_API_KEY=your_groq_api_key_here
# Tavily Search
TAVILY_API_KEY=your_tavily_api_key_here

從Google AI Studio(https://aistudio.google.com/apikey)生成Google API密鑰,從Groq Console(https://console.groq.com/keys)生成Groq API密鑰,并從Tavily Home(https://app.tavily.com/home)獲取你的Tavily 密鑰。

搭建完成后,運行以下命令(請確保已激活環(huán)境):

python manage.py migrate
python manage.py runserver

這應(yīng)該會啟動服務(wù)器。

點擊應(yīng)用程序正在運行的http://127.0.0.1:8000/鏈接。

使用LangGraph設(shè)計聊天機器人邏輯

現(xiàn)在,設(shè)計下聊天機器人邏輯。你可能想知道為什么選擇LangGraph?我選擇 LangGraph,是因為它能夠靈活地構(gòu)建適合用例的復(fù)雜工作流。它如同將多個函數(shù)拼接成一個對你的應(yīng)用程序真正有意義的流程。下面,我們將討論核心邏輯。完整代碼可在 Github 上找到:https://github.com/Badribn0612/chatbot_django_langgraph.git。

1. 狀態(tài)定義

class State(TypedDict):
 messages: Annotated[list, add_messages]

該狀態(tài)模式負責聊天機器人。如果你的Graph處于循環(huán)狀態(tài),它將主要跟蹤消息歷史記錄;否則,它會有包含消息歷史記錄的輸入,并將LLM的響應(yīng)附加到之前的歷史記錄后面。

2. 初始化LangGraph

graph_builder = StateGraph(State)

上面這行代碼將初始化狀態(tài)圖。這個狀態(tài)圖實例負責維護聊天機器人的流程(對話流)。

3. 帶有后備模型的聊天模型

llm_with_fallbacks = init_chat_model("google_genai:gemini-2.0-flash").with_fallbacks(

 [init_chat_model("groq:llama-3.3-70b-versatile")]

)

這基本上會將Gemini 2.0 Flash作為主LLM,將Llama 3.3 70B作為后備模型。如果谷歌服務(wù)器過載或API達到速率限制,它將開始使用Llama 3.3 70B。

4. 工具集成

tool = TavilySearch(max_results=2)
llm_with_tools = llm_with_fallbacks.bind_tools([tool])

我們還將向LLM添加搜索工具。當LLM認為它對查詢?nèi)狈α私鈺r,將使用這項功能。它基本上會使用該工具搜索信息,檢索相關(guān)信息,并基于這些信息響應(yīng)查詢。

5. 聊天機器人節(jié)點邏輯

def chatbot(state: State):
 return {"messages": [llm_with_tools.invoke(state["messages"])]}

這是負責調(diào)用LLM并獲取響應(yīng)的函數(shù)。使用LangGraph,你可以構(gòu)建一個由多個類似這樣的函數(shù)組成的狀態(tài)圖。你可以分支、合并,甚至并行運行函數(shù)(LangGraph中稱為節(jié)點)。對了,我差點忘了,你甚至可以在圖中創(chuàng)建循環(huán)。這就是LangGraph帶來的那種靈活性。

6. 工具節(jié)點和條件流

tool_node = ToolNode(tools=[tool])
graph_builder.add_conditional_edges("chatbot", tools_condition)
graph_builder.add_edge("tools", "chatbot")

我們將為該工具創(chuàng)建一個節(jié)點,這樣,每當聊天機器人搞清楚需要使用它時,它就可以簡單地調(diào)用該工具節(jié)點并獲取相關(guān)信息。

7. 圖入口和出口

graph_builder.add_edge(START, "chatbot")
graph = graph_builder.compile()
from IPython.display import Image, display
display(Image(graph.get_graph().draw_mermaid_png()))

上述代碼給出了所需的可視化效果。

該LangGraph環(huán)境允許你構(gòu)建一個結(jié)構(gòu)化的聊天機器人,它可以處理對話,需要時調(diào)用網(wǎng)絡(luò)搜索等工具,并在某個模型失敗時后備到替代模型。它具有模塊化,易于擴展。現(xiàn)在 LangGraph部分已完成,不妨學(xué)習(xí)如何使用Django為我們的聊天機器人創(chuàng)建API。

使用Django構(gòu)建API

如果你是Django新手,可以使用本指南學(xué)習(xí)如何創(chuàng)建應(yīng)用程序。為此,我們已創(chuàng)建:

  • 項目:djangoproj
  • 應(yīng)用程序:djangoapp

第1步:應(yīng)用程序配置

在djangoapp/apps.py 中,我們定義應(yīng)用程序配置,以便Django能夠識別它:

from django.apps import AppConfig
class DjangoappConfig(AppConfig):
 default_auto_field = "django.db.models.BigAutoField"
 name = "djangoapp"
Now register the app inside djangoproj/settings.py:
INSTALLED_APPS = [
 # default Django apps...
 "djangoapp",
]

第2步:創(chuàng)建聊天機器人API

在djangoapp/views.py中,我們定義一個用于處理POST請求的簡單API端點:

from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
from chatbot import get_chatbot_response
@csrf_exempt
def chatbot_api(request):
 if request.method == "POST":
 try:
 data = json.loads(request.body)
 messages = data.get("messages", [])
 user_query = data.get("query", "")
 messages.append({"role": "user", "content": user_query})
 response = get_chatbot_response(messages)
 serialized_messages = [serialize_message(msg) for msg in response["messages"]]
 return JsonResponse({"messages": serialized_messages})
 except Exception as e:
 return JsonResponse({"error": str(e)}, status=500)
 return JsonResponse({"error": "POST request required"}, status=400)
  • 該視圖接受用戶輸入,將其傳遞給基于LangGraph的聊天機器人,并返回響應(yīng)。
  • @csrf_exempt用于測試/演示,以允許外部POST請求。

第3步:將API連接到URL

在djangoproj/urls.py中,將視圖連接到端點:

from django.urls import path
from djangoapp.views import chatbot_api, chat_interface
urlpatterns = [
 path('', chat_interface, name='chat_interface'),
 path('api/chatbot/', chatbot_api, name='chatbot_api'),
]

現(xiàn)在,向/api/chatbot/發(fā)送POST請求將觸發(fā)聊天機器人并返回JSON響應(yīng)。

第4步:部署基本的聊天用戶界面

要顯示簡單的界面,請在djangoapp/views.py中添加以下內(nèi)容:

from django.shortcuts import render
def chat_interface(request):
 return render(request, 'index.html')

該視圖渲染index.html,這是基本的聊天界面。

在djangoproj/settings.py中,告訴Django去哪里查找模板:

TEMPLATES = [
 {
 "BACKEND": "django.template.backends.django.DjangoTemplates",
 "DIRS": [BASE_DIR / "templates"],
 # ...
 },
]

我們已使用Django將LangGraph聊天機器人轉(zhuǎn)變成了實用的API,僅用幾行代碼,甚至還添加了一個用于與其交互的基本用戶界面。這種設(shè)計簡潔、模塊化且易于擴展,非常適合實際項目和演示。

以下是聊天機器人的實際演示:

你可以在此基礎(chǔ)上構(gòu)建的功能

以下是你可以在該應(yīng)用程序基礎(chǔ)上構(gòu)建的一些功能:

  • 設(shè)置系統(tǒng)提示和智能體角色來指導(dǎo)行為和響應(yīng)。
  • 創(chuàng)建多個專用智能體和一個路由智能體,以根據(jù)用戶輸入委派任務(wù)。
  • 插入RAG工具以引入你自己的數(shù)據(jù)并豐富響應(yīng)。
  • 將對話歷史記錄存儲在數(shù)據(jù)庫(比如PostgreSQL)中,并與用戶會話關(guān)聯(lián),以實現(xiàn)連續(xù)性和分析。
  • 實現(xiàn)智能消息窗口或摘要功能,以輕松應(yīng)對token限制。
  • 使用提示模板或者Guardrails AI或NeMo等工具,進行輸出驗證和安全過濾。
  • 使用Gemini 2.5 pro或GPT-4.1等功能強大的模型,添加支持圖像或文件處理的功能。

結(jié)論

全文就是這樣!我們剛使用LangGraph和Django從零開始構(gòu)建了一個功能齊全的聊天機器人,它擁有簡潔的API、工具集成、帶有后備模型的LLM 等等。最棒的是,它是模塊化的,非常易于擴展。無論你是想為自己的產(chǎn)品構(gòu)建智能助手、嘗試多智能體系統(tǒng),還是只是想試試LangGraph,本文都為你提供了一個堅實的起點。你還可以探究更多內(nèi)容,比如添加圖像輸入、插入自己的知識庫。所以,請繼續(xù)嘗試,在此基礎(chǔ)上不斷構(gòu)建。

原文標題:Building a Conversational AI App with Django and LangGraph,作者:Badrinarayan M

責任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2023-09-21 08:00:00

ChatGPT編程工具

2021-07-14 17:39:46

ReactRails API前端組件

2018-11-14 19:00:24

PythonRedis共享單車

2011-03-14 14:47:50

2011-03-14 15:14:10

AzureFacebook營銷式應(yīng)用程序

2011-03-14 15:10:10

AzureFacebook

2011-05-11 10:58:39

iOS

2025-04-18 08:01:21

AIAgent驅(qū)動力

2010-07-12 10:11:27

ibmdwWeb

2021-02-17 11:05:34

PythonPyQt代碼

2020-03-31 12:21:20

JSON即時消息編程語言

2010-01-08 12:14:44

ibmdwAndroid

2024-06-07 08:25:16

2012-03-30 15:54:43

ibmdw

2024-12-10 08:01:38

2019-05-27 13:50:35

多云架構(gòu)企業(yè)多云集成云計算

2010-06-13 09:22:37

jQuery

2024-01-09 18:00:22

Rust后端slvelte

2024-12-24 08:12:59

2021-10-29 16:18:14

Streamlit Python
點贊
收藏

51CTO技術(shù)棧公眾號