はじめに
Databricks 基盤モデルAPIは多種多様なLLM APIを提供しており、Llamaのようなオープンウェイトモデルもあれば、GPT-5.2やClaude Sonnetなどのプロプライエタリモデルをネイティブ提供しています。
基盤モデルAPIはOpenAI社のAPI互換で提供されており、ClaudeやGeminiもopenaiクライアントから実行することができます。
ただ、特にGeminiで顕著だと感じるのですが、OpenAI Client経由だと微妙に挙動が違ったりエラーが出ることがあります。(マルチツールコーリングの実行時など)
そんなときはOpenAI互換APIではなく、AnthropicやGeminiそのままのAPIを直接使えればと思っていたのですが、ネイティブAPIコールもできそうな感じだったのでLangChain経由でのやり方を記載しておきます。
(LangChainではなくて直接AnthropicやGoogleGenerativeAPIのクライアントを直接利用しても問題ないと思います)
このやり方がDatabricksにおいて正式なやり方かどうかは不明です。ご利用は注意ください。
もしかしたら公式ドキュメントに記載があるかもしれませんが、私の方ではうまく見つからず。。。
また、今後はより互換性が向上され改善していく可能性があります。(期待しています)
以下の検証はDatabricks on AWSで行っています。
検証
まずはノートブックを作成し、必要なパッケージをインストールします。
今回はLangChain経由でAPIを呼び出して検証することにします。
%pip install -U -qq mlflow langchain>=1.2.3 databricks-langchain langchain-anthropic langchain-google-genai langchain-openai
%restart_python
各種クライアントからDatabricksの基盤APIへ接続するように、トークンやベースURLに関する環境変数を設定します。
ここがポイントで、通常 Databricksホスト+/serving-endpointsのようにserving-endpointsが末尾に来るURLを指定します。一方でAnthropicやGoogleのクライアントに渡すベースURLには、末尾にanthropic/geminiを追加します。
import os
import mlflow
# Notebookを実行するユーザのホストとキーを認証に利用する
creds = mlflow.utils.databricks_utils.get_databricks_host_creds()
os.environ["OPENAI_API_KEY"] = creds.token
os.environ["OPENAI_BASE_URL"] = creds.host + "/serving-endpoints"
os.environ["ANTHROPIC_AUTH_TOKEN"] = creds.token
os.environ["ANTHROPIC_BASE_URL"] = creds.host + "/serving-endpoints/anthropic"
os.environ["GEMINI_API_KEY"] = creds.token
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "false"
os.environ["GOOGLE_GEMINI_BASE_URL"] = creds.host + "/serving-endpoints/gemini"
では、試してみます。
今回はDatabricks基盤モデルAPIに対応したLangChainのモデルクラスChatDatabricks、OpenAI APIに対応したChatOpenAI、Anthropic社のクライアントに対応したChatAnthropic、Google GenAIのクライアントに対応したChatGoogleGenerativeAIの4種を使って、それぞれに対応する基盤モデルAPIにアクセスします。
from databricks_langchain import ChatDatabricks
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI
# Databricks、OpenAI、Anthropic、Google GenAIの4種のクライアントおよび接続先モデルを設定
model_databricks = ChatDatabricks(model="databricks-qwen3-next-80b-a3b-instruct")
model_openai = ChatOpenAI(model="databricks-gpt-5-2")
model_anthropic = ChatAnthropic(model="databricks-claude-sonnet-4-5")
model_google = ChatGoogleGenerativeAI(
model="databricks-gemini-3-flash",
additional_headers={"Authorization": f"Bearer {os.environ["GEMINI_API_KEY"]}"},
)
# 全モデルで同じ質問を投げる
models = [model_databricks, model_openai, model_anthropic, model_google]
for model in models:
result = model.invoke("こんにちは!")
print(result.response_metadata["model_name"], ":")
if isinstance(result.content, str):
print(result.content)
elif isinstance(result.content, list):
if isinstance(result.content[0], dict):
if "text" in result.content[0]:
print(result.content[0]["text"])
else:
print(result.content[0])
print("--------------------")
qwen3-next-instruct-091725 :
こんにちは!😊
何かお手伝いできることがあれば、どんなことでもお気軽にお尋ねください!
今日も素敵な一日になりますように~✨
--------------------
gpt-5.2-2025-12-11 :
こんにちは!今日はどうしましたか?(相談、調べもの、文章作成、翻訳、アイデア出しなど何でも大丈夫です。)
--------------------
claude-sonnet-4-5-20250929 :
こんにちは!お元気ですか?
何かお手伝いできることがあれば、お気軽にお聞きくださいね。😊
--------------------
gemini-3-flash-preview :
こんにちは!何かお手伝いできることはありますか?
--------------------
それぞれ問題なく接続できました。
ClaudeやGeminiについては、OpenAI互換ではクライアント経由で接続できています。
まとめ
Databricks基盤モデルAPIに対して、AnthropicやGoogleのネイティブクライアントから各APIを呼び出す方法を記載してみました。
あまり利用する機会はないかもしれない&今後も動作するかはわからないのですが、APIの挙動に違和感があったりエラーが出る場合に試してみると問題が解決するかもしれません。