EP-7 AI 技術應用:新手小白要開發 AI 工具,需要學什麼?什麼又是 LangChain ?
為了精進自己的技術,本週開始盤點 AI 技術應用可以使用的工具,首先介紹 LangChain,以及基本 API 連結方式。把基本都學會了,要掌握其他技能也會相對簡單。
最近在業餘時間製作武俠小說生成器,遇到了瓶頸,生成的資料不盡人意。
另外,我的辦公室在新年度的 AI 專案,必須有更好的產出(去年是做資訊機房 SOP 問答系統),但是我實在想不出可以再做什麼了。
考量到是我自己的技術不夠,所以我買了一本書,柯克、陳葵懋、 Ryan Chung ,《 LangChain 奇幻旅程》,打算仔細研讀,確保自己沒有落下什麼細節,也可以激發一些想法。
如果你跟我一樣,正在思考如何自己開發系統,使用大型語言模型做更進一步的應用,而不是單純使用網頁版的聊天系統。在接下來這幾週,我會盤點 LangChain 相關技術,你也可以跟著我一起思考有什麼樣的工具可以應用。
什麼是 LangChain
製作大型語言模型的相關應用,一定要認識 LangChain 。
LangChain 是一個開源框架,用來開發語言模型的相關應用程式。你可以把 LangChain 想像成一個工具箱,程式設計師利用這個工具箱,就可以輕鬆地將 ChatGPT 等大型語言模型,連結外部資料、 API 或者各種服務。
如果要學習 LangChain ,必須先學會使用 Python 程式語言。 Python 是非常容易上手的程式語言,如果還不會的話,建議可以每天花 2 小時,一週內快速學完基礎技巧(學完基礎就夠了)。再回頭來學習 LangChain 的開發。
先從連結 API 開始
我們一般使用 ChatGPT 等大型語言模型的方式,是直接到網頁上,上頭有個聊天對話框,你問它答。
可是有時候我們希望把語言模型回傳的文字,做進一步的應用,例如產出制式化的報表,或者請它處理 Excel 檔案,再轉成我們需要的格式等等。
此時就會需要直接連結語言模型的 API 。
API 的中文翻譯是應用程式介面,反正你只要記得,人類使用語言模型等資訊系統,要透過網頁介面,程式要使用其他的資訊系統,則一律透過 API 。例如你手頭上的天氣 App ,就是連結氣象署的資訊系統 API ,取得天氣資訊。
那麼我們要如何取得大型語言模型的 API 呢?
以 OpenAI 的語言模型為例,直接到網頁:https://platform.openai.com/
登入後,選擇左側的 API Keys → Create new secret key ,就可以建立 API Key 。
對了,你應該要先存你的信用卡資料,但是我有一點忘記怎麼操作,這裡如果卡住了,網頁應該會指示你。
注意這裡的 API Key 只會顯示一次,所以複製起來後,先找個地方貼上。切記 API Key 不要外洩就是了。
接著建一個資料夾,然後在裡面建一個 .env
的檔案,在裡面輸入底下文字,你剛剛複製的 API Key 要替換這裡的 Your_API_Key 。
OPENAI_API_KEY=Your_API_Key
接著有個重要的觀念,通常我們在開發專案時,都會做版本控制,有些人會把資料上傳到 GitHub 雲端上,我們不會希望上傳時,也把我們的 API Key 上傳給大家看。所以最好在同一個目錄,加上 .gitignore
檔案。然後裡面輸入,
.env
.env.local
.env.*
.env
忽略主要的環境設定檔.env.local
忽略本地端特定的環境設定.env.*
忽略所有 .env 開頭的檔案
再來請你打開程式編輯器(推薦你使用 WindSurf 等 AI 驅動編輯器),輸入以下文字。
"""
使用 LangChain 框架與 OpenAI API 進行文字翻譯。
使用的主要套件:
- os: 用於存取作業系統功能和環境變數
- dotenv: 用於載入 .env 檔案中的環境變數
- langchain_openai: 提供與 OpenAI API 整合的功能
"""
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
# 載入 .env 檔案中的環境變數(如 API 金鑰)
load_dotenv()
# 從環境變數中取得 OpenAI API 金鑰
# 如果找不到金鑰,則拋出 ValueError 異常
openai_api_key = os.getenv("OPENAI_API_KEY")
if not openai_api_key:
raise ValueError("找不到 OPENAI_API_KEY 環境變數")
# 設定 AI 模型的參數
# 參數說明:
# - api_key: OpenAI API 金鑰
# - model_name: 這裡使用 GPT-3.5-turbo ,比較便宜
# - temperature: 控制回應的創造性,範圍 0-1
# - 0:非常保守、精確
# - 1:更有創意,但是有時很腦殘
# - 0.7:稍微比較平衡
llm = ChatOpenAI(
api_key=openai_api_key,
model_name="gpt-3.5-turbo",
temperature=0.7,
)
# 直接使用 invoke 方法發送訊息
# 訊息格式為字典列表,每個字典包含角色(role)和內容(content)
response = llm.invoke([
{"role": "system", "content": "你是一個翻譯助手,請將文字翻譯成日文。"},
{"role": "user", "content": "你好,我來自台灣"}
])
# 輸出 AI 模型的回應內容
print(response.content)
理論上,上述的程式應該會輸出 こんにちは、私は台湾から来ました。
下週預告
這就是 LangChain 最基本的應用,我把《 LangChain 奇幻旅程》的書稍微快速瀏覽了一下,所有的應用都是上述程式的各種變化。
在這支程式中,直接使用 invoke()
發送提示詞當然不是常規作法,更聰明的方法是用 PromptTemplate
,也會使用 Chain
來規劃工作流。
在下週會更進一步地說明這些工具的應用方式,不過我也不會講得像是這次這麼簡單,畢竟這也是我個人的學習,不是單純的新手教學。