Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LangChainでLLMの ポテンシャルを引き出す

Avatar for gitkado gitkado
October 28, 2023

LangChainでLLMの ポテンシャルを引き出す

OSC2023 Shimaneの5分LT(OSS枠)でLangChainを紹介した資料です。

Avatar for gitkado

gitkado

October 28, 2023
Tweet

More Decks by gitkado

Other Decks in Programming

Transcript

  1. llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0) web_research_retriever = WebResearchRetriever.from_llm( vectorstore=Chroma(embedding_function=OpenAIEmbeddings()), llm=llm, search=GoogleSearchAPIWrapper())

    qa_chain = RetrievalQAWithSourcesChain.from_chain_type( llm=llm, retriever=web_research_retriever) result = qa_chain({"question": "Who developed langchain as OSS?"}) Question: Who developed langchain as OSS? Answer: LangChain was developed by Harrison Chase. Sources: https://en.wikipedia.org/wiki/LangChain Google検索結果をPromptに組み込みLLMへ
  2. boto3_bedrock = boto3.client("bedrock-runtime") llm = Bedrock(model_id="anthropic.claude-v2", client=boto3_bedrock) tools = load_tools(["google-search",

    "python_repl"], llm=llm) suffix = """ Human: 以下のcontextを活用して、次の質問にできる限り答えてください。 : {input} {agent_scratchpad} Assistant: """ prompt = ZeroShotAgent.create_prompt(tools, suffix=suffix, input_variables=["input", "agent_scratchpad"]) agent_executor = AgentExecutor.from_agent_and_tools( agent=ZeroShotAgent(llm_chain=LLMChain(llm=llm, prompt=prompt), tools=tools), verbose=True, tools=tools) ReAct(Bedrock+tools)
  3. agent_executor.run("プログラミング言語Rubyは誰が開発した?") > Entering new AgentExecutor chain... Question: プログラミング言語Rubyは誰が開発した? Thought: Rubyの開発者を知るには、Google検索で「Ruby

    開発者」を検索するのが良いと思います。 Action: google_search Action Input: Ruby 開発者 Observation: まつもと ゆきひろ(本名:松本 行弘(読み同じ)、1965年(昭和40年)4月14日 - )は、日本のソフトウェア技術 者。株式会社ネットワーク応用通信研究所フェロー、楽天 ... Sep 26, 2019 ... その数少ない人物のひとりが、日本にいま す。プログラミング言語・Ruby(ルビー)の作者である、<略> Thought: 観察結果から、プログラミング言語 Rubyの開発者はまつもとゆきひろさんであることがわかりました。 Final Answer: プログラミング言語Rubyの開発者はまつもとゆきひろさんです。 > Finished chain. プログラミング言語Rubyの開発者はまつもとゆきひろさんです。 ReAct(Bedrock+tools)
  4. • 勢い余って破壊的な変更が入りがち ◦ バージョン指定忘れずに • 公式ドキュメントから過去バージョン引けない ◦ 構成すぐ変わるからURL保存してても飛べなくなる ◦ cloneして手元でbuildしたら見れます

    ◦ コード直接読むのが一番早い • 日本語はトークン数が膨れたり文脈も伝えづらい ◦ 英語で伝えてPromptに `answer in Japanese.` を添える 🔗 注意事項(ハマったこと)
  5. 🔗 注意事項(ハマったこと) • 新機能が普通にバグりがち ◦ Bedrock組み込まれるも使えず ◦ OSSだから皆でIssueあげよう‼ • OpenAIやAWS使えるがLLM切り替えるだけではダメ

    ◦ モデルによって最適なプロンプトが違う ◦ ClaudeV2でハマった🙋 ◦ 対応してないパラメータや指定方法が違うことが