Slide 1

Slide 1 text

AWSエンジニアに捧ぐ LangChainの歩き⽅

Slide 2

Slide 2 text

2 ⾃⼰紹介 ● 部署 ○ AWS事業本部コンサルティング部 ● ニックネーム ○ つくぼし ● 最近推しているAWSサービス ○ AWS Infrastructure Composer ● SNS/ブログ ○ X(@tsukuboshi0755) ○ DevelopersIO(つくぼし)

Slide 3

Slide 3 text

対象 3 ● 普段AWSを触っている⽅ ● Bedrockは触ったけどLangChainは触った事がない⽅

Slide 4

Slide 4 text

⽬次 1. LangChainの概要 2. LangChainで使える主なAWSコンポーネント 3. AWSエンジニアに勧めるLangChainの始め⽅ 4. 最後に 4

Slide 5

Slide 5 text

LangChainの概要

Slide 6

Slide 6 text

LangChainとは ● LLMを⽤いたアプリケーションを効率 的に開発するためのOSSフレームワー ク ● 公式ではPythonとTypeScriptの2つの ⾔語に対応 ● LangChainの他に、LLM監視⽤の LangSmith、エージェントデプロイ⽤ のLangGraphと統合されている 6

Slide 7

Slide 7 text

LangChainの製品スイート 7 参考:https://www.langchain.com/

Slide 8

Slide 8 text

LangChainを「今から」学ぶメリット 8 1. LangChainの書き⽅さえ覚えてしまえば、様々なLLM関連 リソースを共通のフレームワークで呼び出せる 2. LangChainのバージョンがv0.3まで上がった事で、破壊的 変更が少なくなり⼤分安定してきている 3. LLMOpsに便利なエコシステム(LangSmith/Langfuse等)が 充実してきており、使うにはLangChainの習得が必須

Slide 9

Slide 9 text

LLMOpsの画⾯例(LangSmith) 9

Slide 10

Slide 10 text

LangChainで使える主なAWSコンポーネント

Slide 11

Slide 11 text

チャットモデル:ChatBedrock / ChatBedrockConverse ● Bedrockテキストモデルを LangChain経由で呼び出すための コンポーネント ● Invoke APIを呼び出す ChatBedrockと、Converse APIを 呼び出すChatBedrockConverseが 存在する ● 今後Converse APIがChatBedrock にも統合される予定との事 11 # Instantiation from langchain_aws import ChatBedrock llm = ChatBedrock( model_id="anthropic.claude-3-sonnet-20240229-v1:0", model_kwargs=dict(temperature=0), # other params... ) # Invocation messages = [ ( "system", "You are a helpful assistant that translates English to French. Translate the user sentence.", ), ("human", "I love programming."), ] ai_msg = llm.invoke(messages) print(ai_msg.content)

Slide 12

Slide 12 text

リトリーバー:AmazonKnowledgeBasesRetriever ● Retrive API(Knowledge Bases)を LangChain経由で呼び出すための コンポーネント ● RetriveAndGenerate APIは現時点 で未対応のため、LangChainで実 装する場合は別途チャットモデル と組み合わせる必要あり 12 # Instantiation from langchain_aws.retrievers import AmazonKnowledgeBasesRetriever retriever = AmazonKnowledgeBasesRetriever( knowledge_base_id="PUIJP4EQUA", retrieval_config={"vectorSearchConfiguration": {"numberOfResults": 4}}, ) # Invocations query = "What did the president say about Ketanji Brown?" retriever.invoke(query)

Slide 13

Slide 13 text

Bedrock API vs LangChain 13 Bedrock API LangChain 呼び出しモデル範囲 Bedrockモデルのみ対応 Bedrock含む様々な生成AIモデ ルに対応 呼び出しリトリーバー範囲 Knowledge Basesのみ対応 Knowledge Bases含む様々なリ トリーバーに対応 破壊的変更頻度 小 小-中程度 公式対応言語 Python/JS(TS)含む様々な言語 に対応 Python/JS(TS)のみ 用途 Amazon Bedrock決め打ちで LLM活用を検討する場合にオス スメ 様々なサービスでLLM活用を比 較検討する場合/LangChainエコ システムを活用したい場合にオス スメ

Slide 14

Slide 14 text

AWSエンジニアに勧めるLangChainの始め⽅

Slide 15

Slide 15 text

AWSエンジニアへのオススメの始め⽅ 15 ● 世の中のLangChainのサンプルコードは、主に langchain-openai(OpenAIモデル)を⽤いたものになってい る ● これを「langchain-awsに置き換えてコードを動作確認す る」と、効率的に勉強できるのでオススメ

Slide 16

Slide 16 text

Amazon SageMaker Code Editorの利⽤ ● SageMaker Studio Code Editorと組み 合わせると、Jupyter Notebookをエ ディタ上で実⾏できるため、素早く検 証が可能 ● AWS上にリソースを⽴てるため、アク セスキーも必要なし ● ⾃動シャットダウン機能やAmazon Q Developerによるコード補完機能も便利 16

Slide 17

Slide 17 text

Amazon SageMaker Code Editorの例 17

Slide 18

Slide 18 text

dotenvモジュールの使⽤ ● SageMaker Code EditorでLangSmith やLangfuseを使⽤する場合、APIキーの 保存⽅法の問題が残る ● dotenvモジュールを使⽤して、秘密情 報を管理するのが⼿っ取り早くてオス スメ 18 from dotenv import load_dotenv env_path = os.path.join(os.getcwd(), '.env') if not os.path.exists(env_path): with open(env_path, 'w') as f: f.write('LANGCHAIN_API_KEY=\n') load_dotenv() print(os.environ["LANGCHAIN_API_KEY"])

Slide 19

Slide 19 text

クロスリージョン推論モデルの使⽤ ● Bedrockのスロットリング制限をでき る限り回避するために使⽤可能 ● 1つのリージョンのモデルがスロットリ ングした際に、別のリージョンのモデ ルに⾃動的にルーティングする 19 from langchain_core.messages import SystemMessage, HumanMessage from langchain_aws import ChatBedrockConverse model = ChatBedrockConverse( model="apac.anthropic.claude-3-haiku-20240307-v1:0", temperature=0 ) messages = [ SystemMessage("You are a helpful assistant."), HumanMessage("こんにちは!"), ] stream = model.stream(messages) full = next(stream) for chunk in stream: full += chunk full

Slide 20

Slide 20 text

具体的に何から始めれば良いの? 20 AIエージェント開発を体系的に学ぶには最適の⼊⾨書「LangChainとLangGraphによるRAG‧AIエージェント[実践]⼊⾨」 \| DevelopersIO

Slide 21

Slide 21 text

最後に

Slide 22

Slide 22 text

まとめ 22 ● 今だからこそLangChainを学ぶメリットは多い! ● Bedrock APIとlangchain-awsを場⾯に応じて使い分ける と良い ● LangChainを検証するために便利なAWSサービスが揃って きているのでフル活⽤すると良い

Slide 23

Slide 23 text

今から⽣成AIを学べば、まだ⽀配されずに間に合うはず...!!! 23

Slide 24

Slide 24 text

No content