0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks基盤モデルAPIをネイティブクライアント(Anthropic/Google GenAI)から直接呼び出す方法

Posted at

はじめに

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の挙動に違和感があったりエラーが出る場合に試してみると問題が解決するかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?