はじめに
生成AIの活用が急速に進む現代において、ビジネスプロセスの効率化や付加価値の創出を目指して、AI技術を統合したアプリケーションの需要が高まっています。SAP S/4HANA Cloudを中心とする業務システムの拡張開発基盤として、SAP BTP (Business Technology Platform) はその柔軟性とスケーラビリティから多くの注目を集めています。特に、SAP BTP上で生成AI(Generative AI)を活用したアプリケーションを構築することは、新たな可能性を切り開く鍵となるでしょう。
本ブログでは、SAP BTP上でLLM(Large Language Model)アプリケーションを構築・運用・監視する手順を、ステップバイステップで詳しく解説します。Azure OpenAIが提供する「gpt-4o」モデルを例に、SAP AI Launchpadを利用したLLMアクセス設定から、SAP Build Codeを用いたLangChainアプリケーションのデプロイ、さらにLangfuseを活用した監視方法までを網羅します。これにより、SAP BTPを最大限に活用した拡張可能なAIソリューションの構築方法を理解することができます。
このブログを参考にしていただくことで、生成AIを取り入れたアプリケーション開発における技術的な基礎を学び、実際のビジネスシナリオに応用するための一歩を踏み出していただけることを願っています。
手順
前提条件
SAP AI Launchpad / SAP AI Core (Extended Plan) / SAP Build Codeの有効化が済んでいるSAP Build Codeを用いてFull-Stack ApplicationタイプのDevSpaceが作成されている
1. Generative AI Hubを用いて強力なLLMへアクセスする
SAP AI LaunchpadからGenerative AI Hubにアクセスし、外部の強力なLLMに対するアクセスを設定していきます。まずはどのようなモデルが利用可能かについては、下記のSAP Noteにまとめて記載があります。必要に応じて確認してください。
https://me.sap.com/notes/3437766
今回は Azure OpenAI の元で提供されている 「gpt-4o」 というモデルを利用していきます。
まずSAP AI Launchpadで作業用のリソースグループに入り、左側のペイン内から 「ML運用」=>「設定」 へ移動します。右上の「作成」より、LLMアクセス設定の作成を行います。
次に、画像の通りに入力を行います。名前は任意ですが、今回は「gpt-4o」としています。
次のページでは、利用するLLMの種類とバージョンを設定します。このmodelNameとmodelVersionには、上記SAP Noteで確認できるモデルとバージョンの名前を入力してください。
以上で設定は完了です。そのまま順次進むと、下記の画面が現れます。modelNameが「gpt-4o」となっていることを確認してください。問題なければ、この起動設定に基づいて、右上のボタンより「デプロイメント作成」 を行います。
起動時間などの設定が可能ですが、今回は全てデフォルトの設定で進めます。うまくいくと、下記の画面に遷移するはずです。しばらく待つとこのLLMアクセスポイントが作成・起動し、現在のステータスが「実行中」 となります。
この状態になれば、Generative AI Hubの設定は完了となります。
2. SAP Build CodeでLangChainのアプリケーションを用意し、SAP BTP上にあらかじめ起動したLangfuseへ接続を行う
続いて、SAP Build Codeを用いてLangChainのアプリケーションをSAP BTP, Cloud Foundry Runtimeにデプロイしていきます。前回のブログで、LangfuseというLLMアプリケーションの監視用プラットフォームをSAP BTP, Kyma Runtime上にデプロイしました。もしまだご覧になっていない方は、合わせてご参照ください。
今回は、GitHubからサンプルアプリケーションをクローンして利用しましょう。
git clone <to-be-updated…>
今回のアプリケーションはMTA(Multi Target Application)として構成されており、SAP Build Code上でデフォルトで利用可能なコマンドラインツールを用いて簡単にデプロイすることができます。
ここで、ソースコードの重要なポイントをピックアップして強調しておきます。
Generative AI Hub SDKを用いてSAP AI Core経由でLangChainを利用する部分
from gen_ai_hub.proxy.langchain.openai import OpenAIEmbeddings as g_OpenAIEmbeddings
from gen_ai_hub.proxy.langchain.openai import ChatOpenAI as g_ChatOpenAI
proxy_client = get_proxy_client(‘gen-ai-hub’) # <- GenAIHubプロキシ
embeddings = g_OpenAIEmbeddings(proxy_model_name=embedding_model) # <- SAP AI Core経由のOpenAI Embeddingモデル
llm = g_ChatOpenAI(proxy_model_name=model_option, proxy_client=proxy_client, temperature=0.0) # <- SAP AI Core経由のOpenAI Chatモデル
Langfuseへのログ流し込みを行う部分
agent = create_react_agent(
llm=llm,
tools=tools,
prompt=prompt
)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
handle_parsing_errors=True,
verbose=True,
max_iterations=5
)
from langfuse.callback import CallbackHandler
langfuse_handler = CallbackHandler(
public_key=”XXXXXXX”,
secret_key=”XXXXXXX”,
host=”http://XXXXXXXX:3000″
)
response = agent_executor.invoke({“input”: input}, config={“callbacks”: [langfuse_handler]})
この接続情報は、LangfuseのUIのダッシュボードページから、右上の 「Configure Tracing」というボタンをクリックすると遷移する下記のページから取得することができます。今回はLangChain上で利用をするため、LangChainのタブを開いてコードスニペットをコピー&ペーストします。
それではデプロイをしていきましょう。クローンしたディレクトリに入り、下記のコマンドを実行してビルドを行います。
mbt build
続いて、下記コマンドを用いて、生成されたmtarファイルをSAP BTP, Cloud Foundry Runtimeにデプロイします。cf login後にはデプロイ先のOrganizationやSpaceを指定してください。
cf login
cf deploy mta_archives/langfuse-test-app_1.0.0.mtar
デプロイが完了すると、インターネットからこのアプリケーションにアクセスすることができます。下記のコマンドを用いて、このアプリケーションのURLを取得しましょう。
cf apps
今回は 「langfuse-langchain-srv」 という名前で公開しており、横にURLが確認できます。
それでは、このLangChainアプリケーションを実行してみましょう。
3. LangChainによる推論チェーンを実行し、Langfuseからトレースを確認する
今回はローカルのPCにインストールしたPostmanからこのPythonアプリケーションにリクエストを行います。実行を行うと、SAP BTP, Cloud Foundry Runtime上でAIエージェントが推論を行い、結果が返されます。
今回はLangfuseによるトレースハンドラを仕込んでいますので、LangfuseのUIからトレースの確認を行いましょう。Langfuse UIから 「Tracing」 => 「Traces」 へ移動します。すると、下記のようにトレースの一覧が確認できます。
中身を確認してみましょう。まず、右側にあるペインがLangChainで実装したAIエージェントがどのように行動したのか、というシーケンスです。1番最上位の要素を選択すると、左側に表示されるような、inputとoutputの確認ができます。
右側のペインをなぞっていくと、「計算機」 を利用していることが確認できます。これはLangChainのソースコードの中でツールとしてAIエージェントに渡したものであり、今回タスクとしてAIエージェントに渡した 「3の3乗根は?」 という問題では、計算機での計算を行うことが望ましいアクションであるため、AIエージェントが選択して利用したのだと考えられます。これを選択すると、下記のようにこのツールに対してどのようにinputされ、ツールの実行結果としてどのようなoutputが得られたのか?を確認することもできます。
もちろん、ダッシュボードの方にも統計情報が反映されています。
今回は計算機というツールだけを用いたシナリオであったため、質問・回答・ログ、共にシンプルなものとなりましたが、実際のユースケースではさらに複雑な形になるでしょう。そういったシナリオでは、本ブログでご紹介している製品群がさらに大きな効果を発揮するはずです。
おわりに
本ブログでは、SAP BTPを活用してLLMアプリケーションを開発・実行・監視する手順を紹介しました。SAP AI Launchpadを利用したGenerative AI Hubの設定から、SAP Build Codeを用いたLangChainアプリケーションのデプロイ、Langfuseを用いたトレーシングや監視まで、一連の流れを具体的に解説することで、SAP BTPの持つポテンシャルを感じていただけたのではないでしょうか。
生成AIを統合したアプリケーションは、従来の業務プロセスに新たな価値をもたらし、より効率的で柔軟なシステム運用を可能にします。また、Langfuseのような監視ツールを活用することで、AIの動作や推論結果を詳細に分析し、信頼性の向上や運用の最適化が実現できます。
これからも、生成AIやLLMの技術は進化し続け、さまざまなユースケースでの活用が期待されます。SAP BTPを基盤としたアプリケーション開発を通じて、企業のDX(デジタルトランスフォーメーション)をさらに加速させる取り組みをぜひ進めてみてください。本ブログがその第一歩となることを願っています。
引き続き、SAP BTPや生成AI関連の技術を活用した新たな挑戦に取り組んでいただければ幸いです。
はじめに生成AIの活用が急速に進む現代において、ビジネスプロセスの効率化や付加価値の創出を目指して、AI技術を統合したアプリケーションの需要が高まっています。SAP S/4HANA Cloudを中心とする業務システムの拡張開発基盤として、SAP BTP (Business Technology Platform) はその柔軟性とスケーラビリティから多くの注目を集めています。特に、SAP BTP上で生成AI(Generative AI)を活用したアプリケーションを構築することは、新たな可能性を切り開く鍵となるでしょう。本ブログでは、SAP BTP上でLLM(Large Language Model)アプリケーションを構築・運用・監視する手順を、ステップバイステップで詳しく解説します。Azure OpenAIが提供する「gpt-4o」モデルを例に、SAP AI Launchpadを利用したLLMアクセス設定から、SAP Build Codeを用いたLangChainアプリケーションのデプロイ、さらにLangfuseを活用した監視方法までを網羅します。これにより、SAP BTPを最大限に活用した拡張可能なAIソリューションの構築方法を理解することができます。このブログを参考にしていただくことで、生成AIを取り入れたアプリケーション開発における技術的な基礎を学び、実際のビジネスシナリオに応用するための一歩を踏み出していただけることを願っています。手順前提条件SAP AI Launchpad / SAP AI Core (Extended Plan) / SAP Build Codeの有効化が済んでいるSAP Build Codeを用いてFull-Stack ApplicationタイプのDevSpaceが作成されている1. Generative AI Hubを用いて強力なLLMへアクセスするSAP AI LaunchpadからGenerative AI Hubにアクセスし、外部の強力なLLMに対するアクセスを設定していきます。まずはどのようなモデルが利用可能かについては、下記のSAP Noteにまとめて記載があります。必要に応じて確認してください。https://me.sap.com/notes/3437766今回は Azure OpenAI の元で提供されている 「gpt-4o」 というモデルを利用していきます。まずSAP AI Launchpadで作業用のリソースグループに入り、左側のペイン内から 「ML運用」=>「設定」 へ移動します。右上の「作成」より、LLMアクセス設定の作成を行います。次に、画像の通りに入力を行います。名前は任意ですが、今回は「gpt-4o」としています。次のページでは、利用するLLMの種類とバージョンを設定します。このmodelNameとmodelVersionには、上記SAP Noteで確認できるモデルとバージョンの名前を入力してください。以上で設定は完了です。そのまま順次進むと、下記の画面が現れます。modelNameが「gpt-4o」となっていることを確認してください。問題なければ、この起動設定に基づいて、右上のボタンより「デプロイメント作成」 を行います。起動時間などの設定が可能ですが、今回は全てデフォルトの設定で進めます。うまくいくと、下記の画面に遷移するはずです。しばらく待つとこのLLMアクセスポイントが作成・起動し、現在のステータスが「実行中」 となります。この状態になれば、Generative AI Hubの設定は完了となります。 2. SAP Build CodeでLangChainのアプリケーションを用意し、SAP BTP上にあらかじめ起動したLangfuseへ接続を行う続いて、SAP Build Codeを用いてLangChainのアプリケーションをSAP BTP, Cloud Foundry Runtimeにデプロイしていきます。前回のブログで、LangfuseというLLMアプリケーションの監視用プラットフォームをSAP BTP, Kyma Runtime上にデプロイしました。もしまだご覧になっていない方は、合わせてご参照ください。https://community.sap.com/t5/technology-blogs-by-sap/llm%E7%9B%A3%E8%A6%96%E3%83%84%E3%83%BC%E3%83%ABlangfuse%E3%82%92sap-btp-kyma-runtime%E3%81%AB%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/ba-p/13960621#M177622今回は、GitHubからサンプルアプリケーションをクローンして利用しましょう。 git clone <to-be-updated…> 今回のアプリケーションはMTA(Multi Target Application)として構成されており、SAP Build Code上でデフォルトで利用可能なコマンドラインツールを用いて簡単にデプロイすることができます。ここで、ソースコードの重要なポイントをピックアップして強調しておきます。Generative AI Hub SDKを用いてSAP AI Core経由でLangChainを利用する部分from gen_ai_hub.proxy.langchain.openai import OpenAIEmbeddings as g_OpenAIEmbeddings
from gen_ai_hub.proxy.langchain.openai import ChatOpenAI as g_ChatOpenAI proxy_client = get_proxy_client(‘gen-ai-hub’) # <- GenAIHubプロキシ
embeddings = g_OpenAIEmbeddings(proxy_model_name=embedding_model) # <- SAP AI Core経由のOpenAI Embeddingモデル
llm = g_ChatOpenAI(proxy_model_name=model_option, proxy_client=proxy_client, temperature=0.0) # <- SAP AI Core経由のOpenAI Chatモデル Langfuseへのログ流し込みを行う部分agent = create_react_agent(
llm=llm,
tools=tools,
prompt=prompt
)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
handle_parsing_errors=True,
verbose=True,
max_iterations=5
)
from langfuse.callback import CallbackHandler
langfuse_handler = CallbackHandler(
public_key=”XXXXXXX”,
secret_key=”XXXXXXX”,
host=”http://XXXXXXXX:3000″
)
response = agent_executor.invoke({“input”: input}, config={“callbacks”: [langfuse_handler]})この接続情報は、LangfuseのUIのダッシュボードページから、右上の 「Configure Tracing」というボタンをクリックすると遷移する下記のページから取得することができます。今回はLangChain上で利用をするため、LangChainのタブを開いてコードスニペットをコピー&ペーストします。それではデプロイをしていきましょう。クローンしたディレクトリに入り、下記のコマンドを実行してビルドを行います。mbt build続いて、下記コマンドを用いて、生成されたmtarファイルをSAP BTP, Cloud Foundry Runtimeにデプロイします。cf login後にはデプロイ先のOrganizationやSpaceを指定してください。cf login
cf deploy mta_archives/langfuse-test-app_1.0.0.mtarデプロイが完了すると、インターネットからこのアプリケーションにアクセスすることができます。下記のコマンドを用いて、このアプリケーションのURLを取得しましょう。cf apps今回は 「langfuse-langchain-srv」 という名前で公開しており、横にURLが確認できます。それでは、このLangChainアプリケーションを実行してみましょう。3. LangChainによる推論チェーンを実行し、Langfuseからトレースを確認する今回はローカルのPCにインストールしたPostmanからこのPythonアプリケーションにリクエストを行います。実行を行うと、SAP BTP, Cloud Foundry Runtime上でAIエージェントが推論を行い、結果が返されます。今回はLangfuseによるトレースハンドラを仕込んでいますので、LangfuseのUIからトレースの確認を行いましょう。Langfuse UIから 「Tracing」 => 「Traces」 へ移動します。すると、下記のようにトレースの一覧が確認できます。中身を確認してみましょう。まず、右側にあるペインがLangChainで実装したAIエージェントがどのように行動したのか、というシーケンスです。1番最上位の要素を選択すると、左側に表示されるような、inputとoutputの確認ができます。右側のペインをなぞっていくと、「計算機」 を利用していることが確認できます。これはLangChainのソースコードの中でツールとしてAIエージェントに渡したものであり、今回タスクとしてAIエージェントに渡した 「3の3乗根は?」 という問題では、計算機での計算を行うことが望ましいアクションであるため、AIエージェントが選択して利用したのだと考えられます。これを選択すると、下記のようにこのツールに対してどのようにinputされ、ツールの実行結果としてどのようなoutputが得られたのか?を確認することもできます。もちろん、ダッシュボードの方にも統計情報が反映されています。 今回は計算機というツールだけを用いたシナリオであったため、質問・回答・ログ、共にシンプルなものとなりましたが、実際のユースケースではさらに複雑な形になるでしょう。そういったシナリオでは、本ブログでご紹介している製品群がさらに大きな効果を発揮するはずです。おわりに本ブログでは、SAP BTPを活用してLLMアプリケーションを開発・実行・監視する手順を紹介しました。SAP AI Launchpadを利用したGenerative AI Hubの設定から、SAP Build Codeを用いたLangChainアプリケーションのデプロイ、Langfuseを用いたトレーシングや監視まで、一連の流れを具体的に解説することで、SAP BTPの持つポテンシャルを感じていただけたのではないでしょうか。生成AIを統合したアプリケーションは、従来の業務プロセスに新たな価値をもたらし、より効率的で柔軟なシステム運用を可能にします。また、Langfuseのような監視ツールを活用することで、AIの動作や推論結果を詳細に分析し、信頼性の向上や運用の最適化が実現できます。これからも、生成AIやLLMの技術は進化し続け、さまざまなユースケースでの活用が期待されます。SAP BTPを基盤としたアプリケーション開発を通じて、企業のDX(デジタルトランスフォーメーション)をさらに加速させる取り組みをぜひ進めてみてください。本ブログがその第一歩となることを願っています。引き続き、SAP BTPや生成AI関連の技術を活用した新たな挑戦に取り組んでいただければ幸いです。 Read More Technology Blogs by SAP articles
#SAP
#SAPTechnologyblog