LLM + LainChain template API - 生成式AI從No-Code到Low-Code開發與應用四部曲 - Cupoy
Colab Notebook 代碼解析與註釋 1. 導入 OpenAI 模組並設置 API 金鑰 from langchain.llms import OpenAI import os os.envi...
Colab Notebook 代碼解析與註釋 1. 導入 OpenAI 模組並設置 API 金鑰 from langchain.llms import OpenAI import os os.environ["OPEN_API_KEY"]="sk-HBcNcxp8X8oAKhSGT3BlbkFJ9sHkCuOITYjONfcc0Y3p" llm=OpenAI(openai_api_key=os.environ["OPEN_API_KEY"],temperature=0.6) 註釋:此代碼導入 LangChain 的 OpenAI 模組,並設置 API 金鑰用於存取 OpenAI 服務。temperature 參數控制生成文本的創新程度。 2. 使用 OpenAI LLM 進行問答 text="What is the capital of Taiwan" print(llm.predict(text)) 註釋:這段代碼使用 OpenAI LLM 回答問題,這裡的問題是詢問印度的首都。 3. 導入並使用 Hugging Face 模型 os.environ["HUGGINGFACEHUB_API_TOKEN"]="你的hugging face API key" from langchain import HuggingFaceHub llm_huggingface=HuggingFaceHub(repo_id="google/flan-t5-large",model_kwargs={"temperature":0,"max_length":64}) output=llm_huggingface.predict("Can you tell me the capital of Kerea") print(output) output=llm_huggingface.predict("Can you write a poem about AI") print(output) 註釋:這段代碼引入了 Hugging Face Hub,並使用特定的模型回答問題和創作詩歌。這展示了 LangChain 如何與不同的 LLMs 進行整合。 4. 使用 Prompt Template 和 LLMChain from langchain.prompts import PromptTemplate from langchain.chains import LLMChain prompt_template=PromptTemplate(input_variables=['country'], template="Tell me the capital of this {country}") prompt_template.format(country="Taiwan") chain=LLMChain(llm=llm,prompt=prompt_template) print(chain.run("Taiwan")) 註釋:這段代碼展示了如何使用 LangChain 的 Prompt Template 和 LLMChain 來建立一個問答模型,這裡是詢問特定國家的首都。 5. 結合多個鏈使用 Simple Sequential Chain from langchain.chains import SimpleSequentialChain capital_template=PromptTemplate(input_variables=['country'], template="Please tell me the capital of the {country}") capital_chain=LLMChain(llm=llm,prompt=capital_template) famous_template=PromptTemplate(input_variables=['capital'], template="Suggest me some amazing places to visit in {capital}") famous_chain=LLMChain(llm=llm,prompt=famous_template) chain=SimpleSequentialChain(chains=[capital_chain,famous_chain]) chain.run("Taiwan") 註釋:這段代碼使用 LangChain 的 Simple Sequential Chain 來組合多個問答鏈。首先查詢國家的首都,然後根據首都推薦觀光地點。 6. 使用 ChatOpenAI 建立對話模型 from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage,SystemMessage,AIMessage chatllm=ChatOpenAI(openai_api_key=os.environ["OPEN_API_KEY"],temperature=0.6,model='gpt-3.5-turbo') chatllm([ SystemMessage(content="You are a comedian AI assistant"), HumanMessage(content="Please provide some comedy punchlines on AI") ]) 註釋:這段代碼展示了如何使用 LangChain 的 ChatOpenAI 模組來建立一個對話模型。這裡模擬了一個人與 AI 關於 AI 笑話的互動。 7. 結合 Prompt Template、LLM 和 Output Parser from langchain.chat_models import ChatOpenAI from langchain.prompts.chat import ChatPromptTemplate from langchain.schema import BaseOutputParser class Commaseperatedoutput(BaseOutputParser): def parse(self,text:str): return text.strip().split(",") template="You are a helpful assistant. When the user gives any input, you should generate 5 word synonyms in a comma-separated list" human_template="{text}" chatprompt=ChatPromptTemplate.from_messages([ ("system",template), ("human",human_template) ]) chain=chatprompt|chatllm|Commaseperatedoutput() chain.invoke({"text":"intelligent"}) 註釋:這段代碼使用 LangChain 的 ChatPromptTemplate 和自定義的輸出解析器來創建一個將使用者輸入轉換為同義詞列表的模型。 衍生知識點 LangChain 的多樣性: LangChain 通過支持不同的語言模型,如 OpenAI 和 Hugging Face,展示了其在語言模型集成方面的多樣性。這使開發者能夠根據需求選擇合適的模型。 Prompt Template 的靈活性: Prompt Template 機制允許開發者創建高度定制的查詢模板,這在處理複雜的語言生成任務時非常有用。 ChatOpenAI 的互動性: ChatOpenAI 模組的使用展示了 AI 在模擬人類對話和互動方面的能力,這在創建互動式應用程序和聊天機器人時至關重要的非常實用。這在開發交互式應用程序和聊天機器人時特別有用。 輸出解析器的創新性: 自定義的輸出解析器展示了對 AI 生成的文本進行後處理的可能性,這使得從 AI 的回應中提取特定格式的信息成為可能。 Short Summary 展示了 AI 在語言處理和創意產生方面的強大能力。這不僅限於簡單的問答,還包括創意寫作、數據解析,以及與 AI 的互動對話。LangChain 作為一個強大的工具,為開發人員在這些領域提供了廣泛的可能性。 完整範例 requirements.txt langchain openai huggingface_hub python-dotenv streamlit app.py # Q&A Chatbot from langchain.llms import OpenAI from dotenv import load_dotenv #load_dotenv() # take environment variables from .env. import streamlit as st import os ## Function to load OpenAI model and get respones def get_openai_response(question): llm=OpenAI(model_name="text-davinci-003",temperature=0.5) response=llm(question) return response ##initialize our streamlit app st.set_page_config(page_title="Q&A Demo") st.header("Langchain Application") input=st.text_input("Input: ",key="input") response=get_openai_response(input) submit=st.button("Ask the question") ## If ask button is clicked if submit: st.subheader("The Response is") st.write(response) 這個 app.py 檔案的內容是一個使用 Streamlit 和 LangChain 架構的 Q&A Chatbot 應用程序的代碼。以下是對代碼各部分的解釋和學習講義: 1. 導入必要的模組 from langchain.llms import OpenAI import streamlit as st import os 2. 定義獲取回應的函式 def get_openai_response(question): llm = OpenAI(model_name="text-davinci-003", temperature=0.5) response = llm(question) return response 含義: 這個函式利用 OpenAI 的text-davinci-003模型來獲取對問題的回應。temperature參數設定為 0.5,意味著回應會保持一定的創造性,同時也考慮到準確性。 3. 初始化 Streamlit 應用 st.set_page_config(page_title="Q&A Demo") st.header("Langchain Application") 含義:這些行將 Streamlit 網頁應用的標題設置為 "Q&A Demo",並在頁面上添加一個標題 "Langchain Application"。 4. 接收用戶輸入和顯示回應 input = st.text_input("Input: ", key="input") response = get_openai_response(input) submit = st.button("Ask the question") if submit: st.subheader("The Response is") st.write(response) 含義:這部分代碼建立了一個文本輸入欄位和一個按鈕。用戶輸入問題後,按下 "Ask the question" 按鈕,程序就會調用先前定義的 get_openai_response 函式來獲取並顯示回應。 學習知識重點 Streamlit: Streamlit 是一種快速建立數據應用的 Python 框架。它允許數據科學家和開發者快速將數據腳本轉換成互動式網頁應用。 LangChain 和 OpenAI 集成: LangChain 是一種構建特定任務代理的工具,它在這裡用於與 OpenAI 模型集成。這允許應用程序利用 OpenAI 的強大語言處理能力。 建立互動式 Q&A 應用: 這個應用程序的核心是建立一個簡單的問答系統。用戶輸入問題,系統則返回基於大型語言模型生成的回應。 這個應用程序展示了如何將最新的語言處理技術和網頁開發工具相結合,快速構建一個功能強大的 Q&A 應用。對於希望探索 AI 在自然語言處理方面應用的開發者和數據科學家來說,這是一個很好的入門範例。