<目次>
(1) LangChainのChainやAgentとは?概要やサンプルプログラムをご紹介
(1-1) やりたいこと
(1-2) Chain概要
(1-3) Chainサンプルプログラム(Chainの適用)
(1-4) Agent概要
(1-5) Agentサンプルプログラム
(1) LangChainのChainやAgentとは?概要やサンプルプログラムをご紹介
(1-1) やりたいこと
(1-2) Chain概要
(1-3) Chainサンプルプログラム(Chainの適用)
# モデルにPrompt(入力)を与えCompletion(出力)を取得する response = llm(chat_prompt.format_prompt( prefectures=input("都道府県名を入力してください : "), text="調子はどうですか?").to_messages() )
# chainを用いて、ModelとPromptを紐づけ chain = LLMChain(llm=llm, prompt=chat_prompt) # chainを用いてモデルを実行(Prompt(入力)を与えCompletion(出力)を取得する) response = chain.run(prefectures=input("都道府県名を入力してください : "), text="調子はどうですか?")
import os from dotenv import load_dotenv from langchain.chat_models import ChatOpenAI from langchain.prompts.chat import (ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate) from langchain import LLMChain # 環境変数読み込み load_dotenv() #OpenAIの接続情報など api_key = os.environ.get('OPEN_AI_KEY') def main(): # 言語モデル(OpenAIのチャットモデル)のラッパークラスをインスタンス化 llm = ChatOpenAI( model="gpt-3.5-turbo", openai_api_key=api_key, temperature=0.0 ) # プロンプトのテンプレート生成 system_template = "あなたは{prefectures}出身です。{prefectures}の方言で返答してください。" system_message_prompt = SystemMessagePromptTemplate.from_template(system_template) human_template = "{text}" human_message_prompt = HumanMessagePromptTemplate.from_template(human_template) chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt]) # chainを用いて、ModelとPromptを紐づけ chain = LLMChain(llm=llm, prompt=chat_prompt) # chainを用いてモデルを実行(Prompt(入力)を与えCompletion(出力)を取得する) response = chain.run(prefectures=input("都道府県名を入力してください : "), text="調子はどうですか?") print(response) if __name__ == "__main__": main()
(1-4) Agent概要
(1-5) Agentサンプルプログラム
●STEP0:SerpAPIのAPIキー取得
https://serpapi.com/manage-api-key
↓
↓
↓
●STEP1:パッケージのインストール
> pip install google-search-results
●STEP2:サンプルプログラムの実行(Agentが自律的に段取りを考える!)
import os from dotenv import load_dotenv from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI # 環境変数読み込み load_dotenv() #OpenAIの接続情報など api_key = os.environ.get('OPEN_AI_KEY') os.environ["SERPAPI_API_KEY"] = os.environ.get('SERPAPI_API_KEY') def main(): # 言語モデル(OpenAIのチャットモデル)のラッパークラスをインスタンス化 llm = OpenAI( openai_api_key=api_key, temperature=0.0 ) # ツールのロード。`llm-math`はllmを使用するため、引数に与える tools = load_tools(["serpapi", "llm-math"], llm=llm) # Agentを初期化。Tool、LLM、Agentの種別を与える。 agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) # 実行 agent.run("昨日の東京の気温は摂氏で何度?その数字を3乗すると?") if __name__ == "__main__": main()
> Entering new AgentExecutor chain... I need to find the temperature in Tokyo yesterday and then cube it. Action: Search Action Input: Tokyo temperature yesterday Observation: Tokyo Temperature Yesterday. Maximum temperature yesterday: 70 °F (at 1:00 pm) Minimum temperature yesterday: 61 °F (at 8:30 am) Average temperature ... Thought: I need to convert the temperature from Fahrenheit to Celsius Action: Calculator Action Input: (70-32)*5/9 Observation: Answer: 21.11111111111111 Thought: I now need to cube the temperature Action: Calculator Action Input: 21.11111111111111^3 Observation: Answer: 9408.779149519889 Thought: I now know the final answer Final Answer: 9408.779149519889 > Finished chain.