iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
自我挑戰組

從零打造客製化 AI 聊天機器人系列 第 18

[從零打造客製化 AI 聊天機器人] 設置意圖資料庫

  • 分享至 

  • xImage
  •  

設定意圖檔案:
intents.txt

[
    {
        "intents": "景點介紹, 景點交通, 景點地址, 景點營業時間",
        "action": {"function": "provide_info", "parameters": "景點名稱", "confirm": "false"}
    }
]
  • intents:用於識別使用者意圖,自訂義的意圖內容
  • action:要執行的內部或外部程式
    • function: 要執行的函數
    • parameters: 實體識別,需要提取的參數,這些參數表示該意圖中,需要識別的具體實體
    • confirm: 最後的結果是否要使用者確認
# 初始化 Azure OpenAI 客戶端
client = AzureOpenAI(
    azure_endpoint=azure_endpoint,
    api_key=api_key,
    api_version=api_version
)

# 意圖內容
with open("./intents.txt","r",encoding='utf-8') as f:  
     data = json.load(f)

intents_list = []
action_list = []

# 提取內容
for item in data:
    intents = item['intents']
    action = item['action']
    intents_list.append(intents)
    action_list.append(action)


# 使用 jieba 分詞
for i in range(len(intents_list)):
    intents_list[i] = " ".join([w for w in list(jb.cut(intents_list[i]))])

# 生成唯一 ID 和向量
ids = [str(uuid.uuid1()) for _ in intents_list]
embeddings = []

for i in range(len(intents_list)):
    response = client.embeddings.create(
        input=intents_list[i],
        model=embedding_model_name
    )
    embedding = response.data[0].embedding
    embeddings.append(embedding)

# 初始化 ChromaDB 客戶端
chroma_client = chromadb.PersistentClient(path="./data/cut")

# 建立或取得 collection
collection_name = "taipei_tourist_intents"
collection = chroma_client.get_or_create_collection(name=collection_name)

# 將意圖、向量和行動資料存入 ChromaDB
collection.add(
    embeddings=embeddings,
    documents=intents_list,
    metadatas=action_list,
    ids=ids
)

print("台北旅遊意圖資料已生成並存入 ChromaDB!")

  1. 讀取訓練意圖資料:
    • intents.txt 包含各種使用者意圖,意圖包含訓練模型的意圖識別和實體識別。
    • 意圖包含 intents(表示使用者可能會說的指令或問題)和對應的 action(表示應該觸發的動作和參數)。
  2. 分詞和資料預處理:
    • 使用 jieba 對意圖進行中文分詞,分割成單獨的詞,更好生成語意嵌入
  3. 生成嵌入 (Embeddings):
    • 使用 AzureOpenAI 來生成這些意圖的語義嵌入,嵌入是將文本轉換為向量,用於後續的相似度計算。
  4. 將意圖及其嵌入存儲於 ChromaDB 中:
    • 使用 ChromaDB 來存儲這些語義嵌入。每個意圖都有一個唯一的 ID (uuid),並將 intents_list(文本)和對應的 action 一起存儲在 chroma_client 中。
    • PersistentClient 用於持久存儲這些資料,從而讓系統可以在之後檢索。

上一篇
[從零打造客製化 AI 聊天機器人] 實體識別(NER)
下一篇
[從零打造客製化 AI 聊天機器人] 查詢意圖資料庫
系列文
從零打造客製化 AI 聊天機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言