🫶
Dify 旧バージョンを利用した際にエラーが発生する
こんにちは、nachiです。
Dify Community をローカル環境で試していたところ、Gemini の API トークン設定時に次のエラーが発生しました。
404 models/gemini-pro is not found for API version v1beta, or is not supported for generateContent.
Call ListModels to see the list of available models and their supported methods.
以前試した際には、同じトークンで設定できたのになぜでしょうか。
実行環境
Dify Community v0.15.3 で発生しました。
エラー原因
記載されている通り、gemini-pro
が見つからないというエラーとなっています。
Difyでは、APIトークンのチェックのため、以下のようなチェックを行っています。
この時のモデルが、gemini-pro
となっているようです。
gemini-pro
現在、Geminiではこのモデルは提供されておりません。
そのため、Dify v1以前を利用したい場合は、トークンチェックに利用するモデルを変更する必要があります。
ソースコードの修正
起動済みのAPIコンテナにアクセスをし、google.py
を以下のように変更します。
/api/core/model_runtime/model_providers/google/google.py
import logging
from core.model_runtime.entities.model_entities import ModelType
from core.model_runtime.errors.validate import CredentialsValidateFailedError
from core.model_runtime.model_providers.__base.model_provider import ModelProvider
logger = logging.getLogger(__name__)
class GoogleProvider(ModelProvider):
def validate_provider_credentials(self, credentials: dict) -> None:
"""
Validate provider credentials
if validate failed, raise exception
:param credentials: provider credentials, credentials form defined in `provider_credential_schema`.
"""
try:
model_instance = self.get_model_instance(ModelType.LLM)
# Use `gemini-1.5-pro` model for validate,
> model_instance.validate_credentials(model="gemini-1.5-pro", credentials=credentials)
except CredentialsValidateFailedError as ex:
raise ex
except Exception as ex:
logger.exception(f"{self.get_provider_schema().provider} credentials validate failed")
raise ex
変更後、コンテナを再起動して、再度トークンの設定を行います。
今度は正常に有効化されました🎉🎉
さいごに
Geminiで旧モデルが利用不可となっていたためエラーが生じましたが
今後は、Gemini以外のプロバイダーでも同様の事象が生じる可能性があります。
通常は、最新版のDifyを利用が推奨はされますが、どうしても旧バージョンを利用したい場合は、モデルID周りの修正が必要となりそうです。
Discussion
突然ですみませんですが、問題があります。
githubのページより来て、
自分も同じエラーを発生しました。
実行環境
説明の通り


dify/api/core/model_runtime/model_providers/google/google.py
ファイル変更、保存し、docker コンテナを再起動してましたが、そのエラーは消えません。(見ての通り、エラーの内容は
404 models/gemini-pro is not found~
のままです)一応、色んな方法を試しましたが、どれもエラーを解決しません:
google.py
ファイル変更の後コンテナ再構築"gemini-1.5"
、"gemini-1.5-pro"
に変更なお、
google.py
ファイル内容変更/ファイル削除、コンテナ再起動しても、エラーの内容は404 models/gemini-pro is not found~
のままです。旧バージョンを利用したいではない、そもそもDifyファイルも再cloneしましたので、
その時最新版のDifyを利用が推奨はわかりますが、これはたたの好奇心です。
自分の手順が間違いかもしれません、もし何が分かるなら教えてください。
コメントありがとうございます!
手順の確認ですが、以下のように対応いただいていますか?
返信ありがとうございます、間違いの所がわかりましだ!
てっきり「ビルドの時、外のapiフォルダ(dify/api/)がAPIコンテナにマウントされて」と思いますが、
そうではないようです。
今回は以下の通りAPIコンテナ「中」のgoogle.pyを変更、成功しました。
docker exec -it docker-api-1 bash
nano core/model_runtime/model_providers/google/google.py
exit
docker container restart docker-api-1
ありがとうございます、勉強になりました!