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

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

つくぼし
February 01, 2025

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

つくぼし

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