iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
生成式 AI

RAG自己來系列:客服機器人系列 第 15

[Day 15] Langchain - Prompt & LLM

  • 分享至 

  • xImage
  •  

在使用 LLM 工具前,一定都要給模型一個「指示」,這個指示會影響模型最終的輸出,例如要求模型將文字輸出格式限制成 Json 或者 Markdown 語法,或者要求他將使用者輸入的文字做總結。

下面來講講 Prompt 的使用方法

from langchain_community.chat_models import ChatOllama
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

# 預先建立一個變數來儲存我們要改模型的指示
template = """請根據使用者給予的內容,給予實質的建議或者有用的回覆,回覆請使用繁體中文

Question: {question}
"""

llm = ChatOllama(
    model="gemma2:2b",
    base_url="http://127.0.0.1:11434"
)

"""
底下這邊比較特別,我們使用 "|" 這個符號來幫我們做資料導向
23 中我們將使用者的輸入蒐集起來並建立一個 dict 
24 中套用 23 行的 dict 到 template 的變數中
25 行將上面的資料丟給 llm 做處理後丟改 26 行做輸出
"""

chain = (
    {"question": RunnablePassthrough()}
    | ChatPromptTemplate.from_template(template)
    | llm
    | StrOutputParser()
)

初始化完成後就可以開始問問題了

print(chain.invoke("我想要買一台筆電,但是不知道要選擇哪一台,可以給我一些建議嗎?"))

https://ithelp.ithome.com.tw/upload/images/20240923/201465558nINR1Dy5i.png

這就是用簡單的 Prompt 去輸出一個字串回覆

LLM

以上的範例是使用 Ollama 的 API 服務,那如果想用 OpenAI 或者我們在 Day 12 介紹的圖形化文字生成工具的話,其實也是很簡單的。

在上面我們使用 ChatOllama 的工具,在這邊我們改使用 ChatOpenAI 看看

from langchain_community.chat_models import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

template = """請根據使用者給予的內容,給予實質的建議或者有用的回覆,回覆請使用繁體中文

Question: {question}
"""

llm = ChatOpenAI(
    api_key=<YOUR_API_KEY>
)

chain = (
    {"question": RunnablePassthrough()}
    | ChatPromptTemplate.from_template(template)
    | llm
    | StrOutputParser()
)

print(chain.invoke("我想要買一台筆電,但是不知道要選擇哪一台,可以給我一些建議嗎?"))

https://ithelp.ithome.com.tw/upload/images/20240923/20146555JQCuEM8HVB.png

使用 OpenAI 的服務只要單純輸入 api_key 即可

但如果要用自己架設的文字生成服務的話,需要額外在終端中啟用 API 的擴充服務,所以將終端指令改成以下的樣子後直接執行 (記得讀取模型喔)

python server.py --extensions api --listen --api --api-port 5001 --trust-remote-code

可以看到中輸出有所變化,在 Log 中可以看到 OpenAI-compatible API URL 已經在 http://0.0.0.0:5001 上開放

https://ithelp.ithome.com.tw/upload/images/20240923/2014655534yVEMCiAP.png

在來將微調程式碼成下面的樣子,主要是要設定 openai_api_base 到我們的 api 端口上

如果不設定這個 openai_api_base 將指向 OpenAI 官方的服務 ,也就是 https://api.openai.com/v1

llm = ChatOpenAI(
    openai_api_base="http://127.0.0.1:5001/v1",
    openai_api_key="sk-111111111111111111111111111111111111111111111111"
)

這時我們重新執行 Python 檔,就可以得到我們本地語言模型的回覆了

https://ithelp.ithome.com.tw/upload/images/20240923/20146555aHoKGx0R3x.png


上一篇
[Day 14] 介紹文字生成框架 - Langchain
下一篇
[Day 16] Langchain - Parsers & Memory
系列文
RAG自己來系列:客服機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言