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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for つくぼし つくぼし
February 01, 2025

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

Avatar for つくぼし

つくぼし

February 01, 2025
Tweet

More Decks by つくぼし

Other Decks in Technology

Transcript

  1. 2 ⾃⼰紹介 • 部署 ◦ AWS事業本部コンサルティング部 • ニックネーム ◦ つくぼし

    • 最近推しているAWSサービス ◦ AWS Infrastructure Composer • SNS/ブログ ◦ X(@tsukuboshi0755) ◦ DevelopersIO(つくぼし)
  2. チャットモデル: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)
  3. リトリーバー: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)
  4. 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エコ システムを活用したい場合にオス スメ
  5. Amazon SageMaker Code Editorの利⽤ • SageMaker Studio Code Editorと組み 合わせると、Jupyter

    Notebookをエ ディタ上で実⾏できるため、素早く検 証が可能 • AWS上にリソースを⽴てるため、アク セスキーも必要なし • ⾃動シャットダウン機能やAmazon Q Developerによるコード補完機能も便利 16
  6. 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=<LANGSMITH APIキーの値 >\n') load_dotenv() print(os.environ["LANGCHAIN_API_KEY"])
  7. クロスリージョン推論モデルの使⽤ • 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