langchain-ai / opengpts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Env Variables | Must provide one of the 'base_url' or 'azure_endpoint' arguments

delicpsyche opened this issue · comments

I am using Azure Open AI Chat deployment , and my .env looks like this

AZURE_OPENAI_DEPLOYMENT_NAME=chat
AZURE_OPENAI_API_KEY="XXXXXXXXXXXX"
AZURE_OPENAI_API_BASE="https://XXXXXXXXX.openai.azure.com/"
AZURE_OPENAI_API_VERSION="2024-03-01-preview"
POSTGRES_PORT=5432
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

When doing a docker compose , I error out at

opengpts-backend | File "/backend/app/tools.py", line 27, in <module>
opengpts-backend | from app.upload import vstore
opengpts-backend | File "/backend/app/upload.py", line 138, in <module>
opengpts-backend | vstore = _determine_azure_or_openai_embeddings()
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/backend/app/upload.py", line 66, in _determine_azure_or_openai_embeddings
opengpts-backend | embedding_function=AzureOpenAIEmbeddings(),
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "pydantic/main.py", line 341, in pydantic.main.BaseModel.__init__
opengpts-backend | pydantic.error_wrappers.ValidationError: 1 validation error for AzureOpenAIEmbeddings
opengpts-backend | __root__
opengpts-backend | Must provide one of the 'base_url' or 'azure_endpoint' arguments, or the 'AZURE_OPENAI_ENDPOINT' environment variable (type=value_error)

Not sure what I am doing wrong.

@delicpsyche

I am not a developer, but I would like to comment (I am still learning English, so some of the expressions may be difficult to understand).

The AzureOpenAIEmbeddings implemented in langchain_openai is configured to read the following environment variables.

  • AZURE_OPENAI_API_KEY
  • AZURE_OPENAI_ENDPOINT
  • OPENAI_API_VERSION

For this reason, you will need to rewrite your .env as follows.

AZURE_OPENAI_DEPLOYMENT_NAME=chat
AZURE_OPENAI_API_KEY="XXXXXXXXXXXX"
AZURE_OPENAI_ENDPOINT="https://XXXXXXXXX.openai.azure.com/"
OPENAI_API_VERSION="2024-03-01-preview"
POSTGRES_PORT=5432
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

Or you can specify the following arguments when calling AzureOpenAIEmbedding.

import os
from langchain_openai import AzureOpenAIEmbeddings

# skip ...

vstore = PGVector(
    connection_string=PG_CONNECTION_STRING,
    embedding_function=AzureOpenAIEmbeddings(
        openai_api_key=os.getenv('AZURE_OPENAI_API_KEY'),
        azure_endpoint=os.getenv('AZURE_OPENAI_API_BASE'),
        openai_api_version=os.getenv('AZURE_OPENAI_API_VERSION'),
    ),
    use_jsonb=True,
)

For more information, check the following python script in the container (container name: opengpts-backend).

/usr/local/lib/python3.11/site-packages/langchain_openai/embeddings/azure.py