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

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

gitkado
October 28, 2023

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

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

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でハマった🙋 ◦ 対応してないパラメータや指定方法が違うことが