如何使用Kimi K2 Thinking構建聊天機器人?

如何使用Kimi K2 Thinking構建聊天機器人?

文章目录

  • 瞭解Kimi K2 Thinking
  • 搭建開發環境
  • 將Kimi K2 Thinking與YouTube聊天機器人整合
  • 1. 資料匯入:獲取YouTube影片文字稿
  • 2. 文字分割:對字幕進行分塊
  • 3. 嵌入和向量搜尋
  • 4. 整合Kimi K2思維模型
  • 5. 構建Streamlit介面並處理使用者查詢
  • 執行和測試聊天機器人
  • 小結

如何使用Kimi K2 Thinking構建聊天機器人?

你是否曾想過,你的聊天機器人能否像人腦一樣思考,而不僅僅是根據預訓練文字進行回覆?也就是說,它能否像人腦一樣推理資訊。你可以詢問聊天機器人關於某個 YouTube 影片的問題,它會找到該影片,並返回結構化的摘要,甚至是對影片關鍵時刻的分析。這正是我們將使用 Kimi K2 Thinking 和 Hugging Face API 來實現的。

藉助 Kimi K2 的推理能力和 Hugging Face API,你可以建立一個能夠理解你查詢的智慧體。在本文中,我們將介紹如何設定環境,透過 Streamlit 連線 Kimi K2 和 YouTube 影片的文字稿,並確保我們的聊天機器人能夠利用開源推理模型。

瞭解Kimi K2 Thinking

Kimi K2 Thinking 是 Moonshot AI 最新推出的開源推理模型,旨在成為一個真正的推理智慧體,而不僅僅是一個文字預測器。它能夠將複雜問題分解為邏輯步驟,在推理過程中使用計算器等工具,並將結果整合為最終答案。基於擁有 1 萬億引數的混合專家架構和 25.6 萬個詞元的上下文視窗,Kimi K2 Thinking 可以無縫處理數百個推理步驟和大量的對話,使其成為當今最強大的思維模型之一。

以下是 Kimi K2 Thinking 的主要特性:以下是 Kimi K2 Thinking 的主要特性:以下是 Kimi K2 Thinking 的主要特性:

  • 卓越的長期一致性:它能夠在 200-300 輪對話中保持上下文連貫性,確保討論始終圍繞主題。
  • 龐大的上下文視窗:憑藉 25.6 萬個詞元,它可以處理海量輸入,例如完整的影片轉錄和冗長的對話。
  • 頂級效能:在推理、編碼和智慧體基準測試中,它可與領先模型(包括 GPT-5 和 Claude)相媲美或超越它們。

瞭解Kimi K2 Thinking

來源:MoonshotAI

簡而言之,Kimi K2 Thinking 是一個開放式推理模型,與聊天機器人截然不同。它是一款專為程式化推理和工具使用而構建的人工智慧。因此,它是打造更智慧聊天機器人的理想選擇。

搭建開發環境

首先,您需要搭建自己的 Python 虛擬環境並安裝所有必需的軟體包。例如,可以使用以下命令建立並啟用虛擬環境: python -m venv .venv; source .venv/bin/activate。現在您可以安裝核心庫了。

  1. Python 和虛擬環境:請使用 Python 3.10 或更高版本以及虛擬環境(例如 venv)。
python -m venv chatbot_env 
source chatbot_env/bin/activate # for Linux/macOS 
chatbot_env\Scripts\activate # for Windows

2. 安裝庫:要安裝必要的庫,請執行以下命令:

pip install streamlit youtube-transcript-api langchain-text-splitters langchain-community faiss-cpu langchain-huggingface sentence-transformers python-dotenv

這將安裝 Streamlit、YouTube 轉錄 API、LangChain 的文字分割工具、用於向量搜尋的 FAISS 以及 Hugging Face 與 LangChain 的整合,以及其他依賴項。(它會根據需要安裝一些軟體包,例如文字生成、轉換器等)。這些軟體包將允許您檢索和處理轉錄文字。

3. 環境變數:建立一個 .env 檔案,其中至少包含 HUGGINGFACEHUB_API_TOKEN=<your-token>。為此,請按照以下步驟操作:

  • 首先訪問 Hugging Face 並註冊,如果您還沒有帳戶,請建立一個帳戶。
  • 現在,訪問右上角的個人資料,然後單擊“Access Token”。
  • 之後,建立一個新的 HF_TOKEN 並複製它,然後返回 VS Code 並建立一個 .env 檔案,並將 HF_TOKEN 新增到其中。以下參考資料描述瞭如何配置環境變數,並提供了一個示例。
HUGGINGFACEHUB_API_TOKEN=your_token_here

將Kimi K2 Thinking與YouTube聊天機器人整合

這款聊天機器人旨在讓使用者能夠就任何 YouTube 影片提出問題,並獲得智慧且符合上下文的答案。使用者無需觀看 45 分鐘的紀錄片或 2 小時的講座,即可直接向系統提問,例如:“演講者對通貨膨脹的看法是什麼?”或“請解釋一下 12 分鐘處描述的演算法步驟。”

現在,讓我們來詳細瞭解一下系統的各個部分:

  • 系統獲取 YouTube 影片的文字稿,
  • 將其分割成有意義的片段。
  • 這些片段被轉換為向量嵌入以便檢索。
  • 當使用者查詢系統時,系統會檢索最相關的部分。
  • 這些片段被傳遞給 Kimi K2 Thinking,進行逐步推理,並生成符合上下文的答案。

整個體驗的每一層都至關重要,它們將非結構化的文字稿提煉成智慧對話。以下我們將清晰而實用地介紹整個流程。

1. 資料匯入:獲取YouTube影片文字稿

整個流程從獲取 YouTube 影片的文字稿開始。我們的聊天機器人使用輕量級的 youtube-transcript-api,無需下載影片檔案或進行繁重的處理。

from youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, NoTranscriptFound, VideoUnavailable
def fetch_youtube_transcript(video_id):
try:
you_tube_api = YouTubeTranscriptApi()
youtube_transcript = you_tube_api.fetch(video_id, languages=['en'])
transcript_data = youtube_transcript.to_raw_data()
transcript = " ".join(chunk['text'] for chunk in transcript_data)
return transcript
except TranscriptsDisabled:
return "Transcripts are disabled for this video."
except NoTranscriptFound:
return "No English transcript found for this video."
except VideoUnavailable:
return "Video is unavailable."
except Exception as e:
return f"An error occurred: {str(e)}"

此模組能夠高效、可靠地以純文字格式檢索您在 YouTube 上看到的實際字幕。

2. 文字分割:對字幕進行分塊

YouTube 字幕可能非常龐大,有時包含數百個字元,甚至數千個字元。由於語言模型和嵌入模型在處理較小的文字塊時效果最佳,因此我們需要將字幕分割成大小可控的文字塊。

該系統使用 LangChain 的 RecursiveCharacterTextSplitter,透過智慧演算法建立文字塊,該演算法在分割文字的同時,保持自然的停頓(句子、段落等)完整。

from langchain_text_splitters import RecursiveCharacterTextSplitter
from a_data_ingestion import fetch_youtube_transcript
def split_text(text, chunk_size=1000, chunk_overlap=200):
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=chunk_overlap
)
chunks = text_splitter.create_documents([text])
return chunks

為什麼這很重要?

  • 防止超出模型標記限制。
  • 透過重疊/引用塊保持上下文關聯。
  • 建立語義清晰的片段,以實現準確的檢索。
  • 分塊確保不會丟失任何重要細節。

3. 嵌入和向量搜尋

獲得清晰的塊後,我們將建立向量嵌入數學表示,以捕捉語義含義。建立向量嵌入後,我們可以進行相似性搜尋,使聊天機器人能夠在使用者提問時從對話記錄中檢索相關塊。

from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from dotenv import load_dotenv
load_dotenv()
def vector_embeddings(chunks):
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-mpnet-base-v2",
model_kwargs={"device": "cpu"},
encode_kwargs={"normalize_embeddings": True}
)
vector_store = FAISS.from_documents(
documents=chunks,
embedding=embeddings
)
return vector_store

主要特性:

  • 採用快速輕量級的 MiniLM 嵌入模型。
  • 利用 FAISS 實現極速相似度搜尋。
  • 跟蹤每個查詢的前 3 個最相關的文字片段。

由於 Kimi K2 只會收到最相關的片段,而不是整個文字,因此大大提高了準確性。

4. 整合Kimi K2思維模型

一旦識別出相關的文字片段,系統就會透過 Hugging Face 端點將其提交給 Kimi K2。此時,聊天機器人將真正展現其智慧,能夠執行多步驟推理、摘要,並根據先前的上下文回答問題。

引數詳解:

  • repo_id:將請求路由到官方 Kimi K2 模型。
  • max_new_tokens:控制響應的長度。
  • do_sample=False:這將提供確定性且基於事實的響應。
  • repetition_penalty:這將防止 Kimi K2 給出兩次相同的答案。

5. 構建Streamlit介面並處理使用者查詢

要執行此部分,使用者必須在側邊欄中輸入 YouTube 影片 ID,可以預覽影片,然後即時提問。輸入有效的影片 ID 後,自動化後端會自動獲取影片的文字稿。當使用者提問時,機器人會在文字稿中搜尋最相關的部分,豐富提示資訊,並將其傳送給 Kimi K2 Thinking 進行推理。使用者可以立即獲得回覆,Streamlit 框架會以類似聊天的方式保留對話歷史記錄,流暢、資訊豐富且無縫銜接。

執行和測試聊天機器人

要在本地進行測試,請開啟 Streamlit 介面。在專案資料夾的終端中(確保虛擬環境已啟用),執行以下命令:

streamlit run streamlit_app.py

這將啟動本地伺服器並在瀏覽器中開啟應用程式視窗。(如果您願意,也可以執行 python -m streamlit run streamlit_app.py)。介面側邊欄中會有一個輸入框,您可以在其中輸入 YouTube 影片 ID,ID 是影片 URL 中 `v=` 後面的部分。例如,您可以使用 `U8J32Z3qV8s` 作為示例講座的 ID。輸入 ID 後,應用程式將獲取文字轉錄,然​​後在後臺建立 RAG Pipeline(分割文字、嵌入等)。

後端執行機制:

  • 檢索相關的文字轉錄片段
  • 使用 augment_fn() 函式增強提示
  • Kimi K2 Thinking 根據提供的上下文進行推理
  • 建立要在聊天中顯示的答案
  • 保留會話歷史記錄以增強記憶效果

您可以在此 GitHub 倉庫中檢視完整程式碼。

小結

如今,構建高階聊天機器人意味著將強大的推理模型與易於使用的 API 相結合。在本教程中,我們使用 Kimi K2 Thinking 模型以及 Hugging Face API 建立了一個能夠總結 YouTube 影片的聊天機器人。Kimi K2 的逐步推理和工具使用能力使機器人能夠更深入地理解影片文字。像 Kimi K2 Thinking 這樣的開放模型表明,人工智慧的未來是開放的、強大的,並且觸手可及。

評論留言