市面上有很多雲端的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中的简单使用 - 知乎