Amazon Bedrock Integration
Langfuse を Amazon Bedrock と組み合わせることで、各リクエストの詳細なトレースやメトリクスを簡単に取得でき、アプリのパフォーマンスや動作を分析できます。
トレーシング機能に加え、プレイグラウンド、LLM を用いた評価、プロンプト実験などの UI 機能も Amazon Bedrock と完全に互換性があり、プロジェクト設定で Bedrock の設定を追加するだけで利用できます。
Integration には以下の 3 つが書かれていました。
- フレームワークの利用
- Langchain
- Llama Index
- Haystack
- Vercel AI SDK
- LiteLLM による経由
- Bedrock SDK を Langfuse Decorator でラッピング
Langfuse を始める
1. Langfuse リポジトリのクローン
git clone https://github.com/langfuse/langfuse.git
cd langfuse
2. Langfuse の起動
docker compose up
3. Langfuse UI にサインイン
http://localhost:3000
を開き、Langfuse UI にアクセスする。初回は、Sign up でアカウントを作成し、Sign in します。
4.Organization と Project の作成
最初に Organization と Project を作成しておきます
Langfuse をアプリケーションに実装
1.Langfuse から secret_key と public_key を確認する
「Settings」の「API Keys」から作成、確認でききます。
2. アプリケーションコードの修正
アプリケーションコードで、コメントアウトしている箇所を追記します。
「Settings」の「API Keys」は 1 つ前の手順で確認した「API Keys」を利用します。
import streamlit as st
from langchain_aws import ChatBedrock
from langchain_core.messages import HumanMessage, SystemMessage
# インポート
from langfuse.callback import CallbackHandler
# CallbackHandler の設定
langfuse_handler = CallbackHandler(
secret_key="<secret_key>",
public_key="<public_key>",
host="http://localhost:3000"
)
modeId = "anthropic.claude-3-5-sonnet-20241022-v2:0"
llm = ChatBedrock(
model_id = modeId,
model_kwargs={
"max_tokens": 2000,
"temperature": 0.1,
"top_k": 250,
"top_p": 0.9,
},
streaming=True,
# 呼び出し
callbacks=[langfuse_handler]
)
systemMsg = "あなたはユーザーの質問に答える日本人のアシスタントです。"
messages = [
SystemMessage(content= systemMsg),
]
st.title("Bedrock チャットボット")
if prompt := st.chat_input("質問内容を入力して下さい"):
messages.append(HumanMessage(content=prompt))
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
st.write_stream(llm.stream(messages))
動作確認
1. 質問する
2. トレースを確認する
Langfuse からトレースを確認してみます。