
LLM飿ºã¢ããªã®éçºãæ¯æŽããã©ã€ãã©ãª LangChain ã®äœ¿ãæ¹ (3) - ãšãŒãžã§ã³ã
ãLangChainãã®ããšãŒãžã§ã³ããã®äœ¿ãæ¹ããŸãšããŸããã
åå
1. ãšãŒãžã§ã³ã
ããšãŒãžã§ã³ããã¯LLMã䜿çšããŠãå®è¡ããã¢ã¯ã·ã§ã³ãšãã®é åºã決å®ããŸããã¢ã¯ã·ã§ã³ã¯ããããŒã«ãå®è¡ããŠãã®åºåã芳å¯ããŸãã¯ããŠãŒã¶ãŒã«æ»ããã®ããããã«ãªããŸãããããŒã«ãã¯ãGoogleæ€çŽ¢ãªã©ã®ç¹å®ã®æ©èœã®ããšã«ãªããŸãã
ã»ãšãŒãžã§ã³ã : å®è¡ããã¢ã¯ã·ã§ã³ãšé çªã決å®
ã»ã¢ã¯ã·ã§ã³ :  ããŒã«ãå®è¡ããŠãã®åºåãèŠ³å¯ or ãŠãŒã¶ãŒã«æ»ã
ã»ããŒã« : ç¹å®ã®æ©èœ
2. ãšãŒãžã§ã³ãäžèЧ
çŸåšãæäŸãããŠãããšãŒãžã§ã³ãã¯ã次ã®4ã€ã§ãã
â zero-shot-react-description (ZeroShotAgent)
ReActãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãããŒã«ã®èª¬æã®ã¿ã«åºã¥ããŠäœ¿çšããããŒã«ã決å®ããŸããããŒã«ã¯ããã€ã§ãæäŸã§ããŸãã ãã®ãšãŒãžã§ã³ãã§ã¯ãããŒã«ããšã«èª¬æãæäŸããå¿
èŠããããŸãã
â react-docstore (ReActDocstoreAgent)
ReActãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããã¥ã¡ã³ãã¹ãã¢ãšå¯Ÿè©±ããŸããSearchãšLookupã®2ã€ã®ããŒã«ãæäŸããå¿
èŠããããŸããSearchã¯ããã¥ã¡ã³ããLookupã¯æè¿èŠã€ãã£ãããã¥ã¡ã³ãå
ã®çšèªãæ€çŽ¢ããŸãã
詳ããã¯ãReAct paperã®Wikipediaã®äŸãåç
§ã
â self-ask-with-search (SelfAskWithSearchAgent)
Intermediate Answerãšãã1ã€ã®ããŒã«ã䜿çšããŸãããã®ããŒã«ã¯ã質åã«å¯Ÿããäºå®ã«åºã¥ãåçãæ€çŽ¢ã§ããå¿
èŠããããŸãã
詳ããã¯ãself ask with search paperãåç
§ã
â conversational-react-description
äŒè©±çšã«æé©åããããšãŒãžã§ã³ãã§ãããšãŒãžã§ã³ãããŠãŒã¶ãŒãšäŒè©±ããªãããå¿
èŠãªæã«ããŒã«ã®æ©èœãåŒã³åºãããšãã§ããŸããReActãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠäœ¿çšããããŒã«ã決å®ããã¡ã¢ãªã䜿çšããŠä»¥åã®äŒè©±ã®ããåããèšæ¶ããŸãã
3. ããŒã«äžèЧ
çŸåšãæäŸãããŠããããŒã«ã¯ã次ã®10åã§ãã
â python_repl
Pythonã·ã§ã«ã§ãã ããã䜿çšã㊠python ã³ãã³ããå®è¡ããŸãã å
¥åã¯æå¹ãª python ã³ãã³ãã§ãªããã°ãªããŸããã åºåãå¿
èŠãªå Žåã¯ãprintããå¿
èŠããããŸãã
â serpapi
ãµãŒããšã³ãžã³ã§ãã çŸåšã®ã€ãã³ãã«é¢ãã質åã«çããå¿
èŠãããå Žåã«åœ¹ç«ã¡ãŸãã å
¥åã¯æ€çŽ¢ã¯ãšãªã§ããå¿
èŠããããŸãã
â requests
ã€ã³ã¿ãŒããããžã®ããŒã¿ã«ã§ãã ãµã€ãããç¹å®ã®ã³ã³ãã³ããååŸããå¿
èŠãããå Žåã«äœ¿çšããŸãã å
¥åã¯ç¹å®ã®URLã§ããå¿
èŠããããåºåã¯ãã®ããŒãžã®ãã¹ãŠã®ããã¹ãã«ãªããŸãã
â terminal
ã¿ãŒããã«ã§ã³ãã³ããå®è¡ããŸãã å
¥åã¯æå¹ãªã³ãã³ãã§ããå¿
èŠããããåºåã¯ãã®ã³ãã³ãã®å®è¡ããã®åºåã«ãªããŸãã
â pal-math
è€éãªåèªã®æ°åŠã®åé¡ã解決ããã®ã«åªããèšèªã¢ãã«ã§ããå
¥åã¯ãå®å
šã«è¡šçŸãããé£ããåèªã®æ°åŠã®åé¡ã§ããå¿
èŠããããŸãã
â pal-colored-objects
ãªããžã§ã¯ãã®äœçœ®ãšè²ã®å±æ§ã«ã€ããŠã®æšè«ã«åªããèšèªã¢ãã«ã§ããå
¥åã¯ãå®å
šã«è¡šçŸãããé£ããæšè«ã®åé¡ã§ããå¿
èŠããããŸãã ãªããžã§ã¯ãã«é¢ãããã¹ãŠã®æ
å ±ãšãåçãããæåŸã®è³ªåãå¿
ãå«ããŠãã ããã
â llm-math
æ°åŠã®è³ªåã«çããªããã°ãªããªãæã«åœ¹ç«ã¡ãŸãã
â open-meteo-api
OpenMeteo API ããæ°è±¡æ
å ±ãååŸãããå Žåã«åœ¹ç«ã¡ãŸããå
¥åã¯ããã® API ãåçã§ããèªç¶èšèªã®è³ªåã§ããå¿
èŠããããŸãã
â news-api
çŸåšã®ãã¥ãŒã¹èšäºã®ããã ãããã©ã€ã³ã«é¢ããæ
å ±ãååŸããå Žåã«äœ¿çšããŸããå
¥åã¯ããã® API ãåçã§ããèªç¶èšèªã®è³ªåã§ããå¿
èŠããããŸãã
â tmdb-api
The Movie Database ããæ
å ±ãååŸãããå Žåã«äŸ¿å©ã§ãã å
¥åã¯ããã® API ãåçã§ããèªç¶èšèªã®è³ªåã§ããå¿
èŠããããŸãã
4. ã€ã³ã¹ããŒã«
Google Colabã§ã®ã€ã³ã¹ããŒã«æé ã¯ã次ã®ãšããã§ãã
(1) ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã
ãšãŒãžã§ã³ãã®ããŒã«ã®ããã«ãgoogle-search-resultsããã€ã³ã¹ããŒã«ããŸãã
# ããã±ãŒãžã®ã€ã³ã¹ããŒã«
!pip install langchain
!pip install openai
!pip install google-search-results(2) ç°å¢å€æ°ã®æºåã
以äžã®ã³ãŒãã®Â <OpenAI_APIã®ããŒã¯ã³> ã«ã¯OpenAI APIã®ããŒã¯ã³ã<SerpAPIã®ããŒã¯ã³> ã«ã¯SerpAPIã®ããŒã¯ã³ããæå®ããŸãã
# ç°å¢å€æ°ã®æºå
import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIã®ããŒã¯ã³>"
os.environ["SERPAPI_API_KEY"] = "<SerpAPIã®ããŒã¯ã³>"5. Colabã§ã®å®è¡
Google Colabã§ã®ããšãŒãžã§ã³ããã®å®è¡æé ã¯ã次ã®ãšããã§ãã
(1) ããã±ãŒãžã®ã€ã³ããŒãã
# ããã±ãŒãžã®ã€ã³ããŒã
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.llms import OpenAI(2) LLMã®æºåã
# LLMã®æºåæºå
llm = OpenAI(temperature=0)(3) ããŒã«ã®æºåã
# ããŒã«ã®æºå
tools = load_tools(["serpapi", "llm-math"], llm=llm)(4) ãšãŒãžã§ã³ãã®æºåã
# ãšãŒãžã§ã³ãã®æºå
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description",
verbose=True
)(5) æç« ã«ããèšç®åé¡ã質åã
å¯å£«å±±ã®é«ãã¯3776 mãªã®ã§ãã£ãŠãŸãã
# ãšãŒãžã§ã³ãã®å®è¡
agent.run("å¯å£«å±±ã®é«ãã«2ãæãããšïŒ")> Entering new AgentExecutor chain...
I need to calculate the result of multiplying the height of Mt. Fuji by 2.
Action: Calculator
Action Input: 3776 * 2
Observation: Answer: 7552
Thought: I now know the final answer
Final Answer: å¯å£«å±±ã®é«ãã2åãããš7552mã«ãªããŸãã
> Finished AgentExecutor chain.
'å¯å£«å±±ã®é«ãã2åãããš7552mã«ãªããŸãã(6) æè¿ã®è©±é¡ã質åã
ãŒã£ã¡ã¡ããã®æ¬åã¯åŸè€ã²ãšããªã®ã§ãã£ãŠãŸã (è±èªè¡šèšã ãã©)ã
# ãšãŒãžã§ã³ãã®å®è¡
agent.run("ãŒã£ã¡ã»ãã»ãã£ãã®ãŒã£ã¡ã¡ããã®æ¬åã¯ïŒ")> Entering new AgentExecutor chain...
I need to find out the real name of the character.
Action: Search
Action Input: "Bocchi the Rock's real name"
Observation: (TV) Plot Summary: Hitori "Bocchi-chan" ("Loner") GotÅ is a lonely high school girl whose heart lies in her guitar. She does nothing every day except strum her guitar by herself at home.
Thought: This doesn't answer my question.
Action: Search
Action Input: "Bocchi the Rock real name"
Observation: Bocchi the Rock! is written and illustrated by Aki Hamaji. It was initially serialized on Houbunsha's Manga Time Kirara Max magazine on December 19, 2017, as a guest work. A full serialization started in the same magazine on March 19, 2018. It has been collected into five tankÅbon volumes as of November 26, 2022.
Thought: This still doesn't answer my question.
Action: Search
Action Input: "Bocchi the Rock character real name"
Observation: Gotou, also known as "Bocchi-chan," is a lonely girl who loves the guitar.
Thought: This is the answer I'm looking for.
Final Answer: Gotou
> Finished AgentExecutor chain.
'Gotou'