【AI】利用生成式AI 建構應用 - 05 - LLM 操作的整合框架:LangChain 簡介

市面上有很多雲端的LLM API 服務,也會有地端裝載LLM 的服務。而這些服務都會有各自的呼叫方法,開發AI 應用最常遇到的就是嘗試不同服務跟模型,經過多輪嘗試並從中挑選出滿足應用系統的。LangChain 是一個框架,利用物件導向方式讓切換服務變得容易,減少程式開發成本。

LangChain

內建AI Agent 架構,同時也整合很多LLM 服務及工具.讓開發人員可以用極少的程式碼來開發AI 應用以及AI Agent。筆者先延續上一篇的應用,改寫成LangChain 版本。

安裝

pip install langchain
pip install langchain-community
pip install langchain-ollama

單次對話

from langchain_ollama import ChatOllama
from langchain_core.messages import SystemMessage, HumanMessage

llm = ChatOllama(
    model="llama3.1-tw",
    base_url=base_url,
)

messages = [
    SystemMessage(content="你是一個很有幫助的AI 助手,用繁體中文回答問題."),
    HumanMessage(content="用兩句話介紹獵人裡面的酷拉皮卡,他有什麼念能力."),
]

response = llm.invoke(messages)
print("AI:", response.content)

# AI:
#	酷拉皮卡是日本漫畫《獵人》及其衍生作品中的主要角色之一,他原名飛鳥唯真,擁有出色的念能力和治癒能力。

# 	酷拉皮卡的念能力讓他能夠感知並治療他人的傷口,是他最大的武器。透過「 Ten」、「Zetsu」、「Aki」等心法,酷拉皮卡可以釋放出強大的念力,對敵人造成巨大傷害。

多輪對話

from langchain_ollama import ChatOllama
from langchain_core.messages import (
    SystemMessage,
    HumanMessage,
    AIMessage
)
from datetime import datetime

llm = ChatOllama(
    model="llama3.1-tw",
    base_url=base_url,
)

# 對話記憶
messages = [
    SystemMessage(content="你是一個很有幫助的AI 助手,用繁體中文回答問題")
]

user_messages = [
    "用兩句話介紹獵人裡面的酷拉皮卡,他有什麼念能力",
    "我剛剛說的句子是甚麼?"
]

for user_text in user_messages:
    # user
    messages.append(HumanMessage(content=user_text))
    now = datetime.now().strftime("%H:%M:%S")
    print(f"user [{now}]: {user_text}\n")

    # 呼叫 LLM
    response = llm.invoke(messages)

    # 一定要把 AI 回覆存回 messages(關鍵)
    messages.append(AIMessage(content=response.content))
    now = datetime.now().strftime("%H:%M:%S")
    print(f"AI [{now}]: {response.content}\n")

# user [15:09:01]: 用兩句話介紹獵人裡面的酷拉皮卡,他有什麼念能力

# AI [15:09:12]: 酷拉皮卡是日本漫畫和動畫《獵人》系列中的主要角色之一。他擁有「天空競技場」的稱號,是當今的獵人聯盟首領。

#	他的念能力是「獵人魂」(en: Hunter Soul),這是一		種獨特的能量讓他能夠產生強大的幻術和戰鬥力。
#
#	酷拉皮卡的獵人魂取自他年輕時救活的獵人,也是他得以成為獵人的原因。他的念能力不僅實力強大,
#	而且可以借助他們的力量和經驗,進一步提升自己的實力。這種獨特的念能力體現了酷拉皮卡作為主角的地位和重要性在《獵人》世界中的地位。

#
# user [15:09:12]: 我剛剛說的句子是甚麼?

# AI [15:09:17]: 你剛剛說的句子是:

# 	「用兩句話介紹獵人裡面的酷拉皮卡,他有什麼念能力」

#	這是一個簡短而清晰的句子,詢問了關於獵人劇中的酷拉皮卡及其念能力的簡要介紹。

references:
ChatOllama - Docs by LangChain
ollama在LangChain中的简单使用 - 知乎