Skip to content

Commit c4d2a7f

Browse files
committed
Merge branch 'main' into pydanticai
2 parents 02c5f12 + 541adda commit c4d2a7f

File tree

9 files changed

+48
-7
lines changed

9 files changed

+48
-7
lines changed

.env.sample

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ POSTGRES_PASSWORD=postgres
55
POSTGRES_DATABASE=postgres
66
POSTGRES_SSL=disable
77

8-
# OPENAI_CHAT_HOST can be either azure, openai, or ollama:
8+
# OPENAI_CHAT_HOST can be either azure, openai, ollama, or github:
99
OPENAI_CHAT_HOST=azure
10-
# OPENAI_EMBED_HOST can be either azure or openai:
10+
# OPENAI_EMBED_HOST can be either azure, openai, ollama, or github:
1111
OPENAI_EMBED_HOST=azure
1212
# Needed for Azure:
1313
# You also need to `azd auth login` if running this locally
@@ -28,10 +28,17 @@ AZURE_OPENAI_KEY=
2828
OPENAICOM_KEY=YOUR-OPENAI-API-KEY
2929
OPENAICOM_CHAT_MODEL=gpt-3.5-turbo
3030
OPENAICOM_EMBED_MODEL=text-embedding-3-large
31-
OPENAICOM_EMBED_MODEL_DIMENSIONS=1024
31+
OPENAICOM_EMBED_DIMENSIONS=1024
3232
OPENAICOM_EMBEDDING_COLUMN=embedding_3l
3333
# Needed for Ollama:
3434
OLLAMA_ENDPOINT=http://host.docker.internal:11434/v1
3535
OLLAMA_CHAT_MODEL=llama3.1
3636
OLLAMA_EMBED_MODEL=nomic-embed-text
3737
OLLAMA_EMBEDDING_COLUMN=embedding_nomic
38+
# Needed for GitHub Models:
39+
GITHUB_TOKEN=YOUR-GITHUB-TOKEN
40+
GITHUB_BASE_URL=https://models.inference.ai.azure.com
41+
GITHUB_MODEL=gpt-4o
42+
GITHUB_EMBED_MODEL=text-embedding-3-large
43+
GITHUB_EMBED_DIMENSIONS=1024
44+
GITHUB_EMBEDDING_COLUMN=embedding_3l

evals/evaluate.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ def get_openai_config() -> dict:
6666
# azure-ai-evaluate will call DefaultAzureCredential behind the scenes,
6767
# so we must be logged in to Azure CLI with the correct tenant
6868
openai_config["model"] = os.environ["AZURE_OPENAI_EVAL_MODEL"]
69+
elif os.environ.get("OPENAI_CHAT_HOST") == "ollama":
70+
raise NotImplementedError("Ollama is not supported. Switch to Azure or OpenAI.com")
71+
elif os.environ.get("OPENAI_CHAT_HOST") == "github":
72+
raise NotImplementedError("GitHub Models is not supported. Switch to Azure or OpenAI.com")
6973
else:
7074
logger.info("Using OpenAI Service with API Key from OPENAICOM_KEY")
7175
openai_config = {"api_key": os.environ["OPENAICOM_KEY"], "model": "gpt-4"}

evals/generate_ground_truth.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ def get_openai_client() -> tuple[Union[AzureOpenAI, OpenAI], str]:
101101
)
102102
model = os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT"]
103103
elif OPENAI_CHAT_HOST == "ollama":
104-
raise NotImplementedError("Ollama OpenAI Service is not supported. Switch to Azure or OpenAI.com")
104+
raise NotImplementedError("Ollama is not supported. Switch to Azure or OpenAI.com")
105+
elif OPENAI_CHAT_HOST == "github":
106+
raise NotImplementedError("GitHub Models is not supported. Switch to Azure or OpenAI.com")
105107
else:
106108
logger.info("Using OpenAI Service with API Key from OPENAICOM_KEY")
107109
openai_client = OpenAI(api_key=os.environ["OPENAICOM_KEY"])

infra/main.bicep

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ var webAppEnv = union(azureOpenAIKeyEnv, openAIComKeyEnv, [
302302
value: openAIEmbedHost
303303
}
304304
{
305-
name: 'OPENAICOM_EMBED_MODEL_DIMENSIONS'
305+
name: 'OPENAICOM_EMBED_DIMENSIONS'
306306
value: openAIEmbedHost == 'openaicom' ? '1024' : ''
307307
}
308308
{

src/backend/fastapi_app/dependencies.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ async def common_parameters():
5151
openai_embed_model = os.getenv("OLLAMA_EMBED_MODEL") or "nomic-embed-text"
5252
openai_embed_dimensions = None
5353
embedding_column = os.getenv("OLLAMA_EMBEDDING_COLUMN") or "embedding_nomic"
54+
elif OPENAI_EMBED_HOST == "github":
55+
openai_embed_deployment = None
56+
openai_embed_model = os.getenv("GITHUB_EMBED_MODEL") or "text-embedding-3-large"
57+
openai_embed_dimensions = int(os.getenv("GITHUB_EMBED_DIMENSIONS", 1024))
58+
embedding_column = os.getenv("GITHUB_EMBEDDING_COLUMN") or "embedding_3l"
5459
else:
5560
openai_embed_deployment = None
5661
openai_embed_model = os.getenv("OPENAICOM_EMBED_MODEL") or "text-embedding-3-large"
@@ -63,6 +68,9 @@ async def common_parameters():
6368
openai_chat_deployment = None
6469
openai_chat_model = os.getenv("OLLAMA_CHAT_MODEL") or "phi3:3.8b"
6570
openai_embed_model = os.getenv("OLLAMA_EMBED_MODEL") or "nomic-embed-text"
71+
elif OPENAI_CHAT_HOST == "github":
72+
openai_chat_deployment = None
73+
openai_chat_model = os.getenv("GITHUB_MODEL") or "gpt-4o"
6674
else:
6775
openai_chat_deployment = None
6876
openai_chat_model = os.getenv("OPENAICOM_CHAT_MODEL") or "gpt-3.5-turbo"

src/backend/fastapi_app/openai_clients.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ async def create_openai_chat_client(
5050
base_url=os.getenv("OLLAMA_ENDPOINT"),
5151
api_key="nokeyneeded",
5252
)
53+
elif OPENAI_CHAT_HOST == "github":
54+
logger.info("Setting up OpenAI client for chat completions using GitHub Models")
55+
github_base_url = os.getenv("GITHUB_BASE_URL", "https://models.inference.ai.azure.com")
56+
github_model = os.getenv("GITHUB_MODEL", "gpt-4o")
57+
logger.info(f"Using GitHub Models with base URL: {github_base_url}, model: {github_model}")
58+
openai_chat_client = openai.AsyncOpenAI(
59+
base_url=github_base_url,
60+
api_key=os.getenv("GITHUB_TOKEN"),
61+
)
5362
else:
5463
logger.info("Setting up OpenAI client for chat completions using OpenAI.com API key")
5564
openai_chat_client = openai.AsyncOpenAI(api_key=os.getenv("OPENAICOM_KEY"))
@@ -99,6 +108,15 @@ async def create_openai_embed_client(
99108
base_url=os.getenv("OLLAMA_ENDPOINT"),
100109
api_key="nokeyneeded",
101110
)
111+
elif OPENAI_EMBED_HOST == "github":
112+
logger.info("Setting up OpenAI client for embeddings using GitHub Models")
113+
github_base_url = os.getenv("GITHUB_BASE_URL", "https://models.inference.ai.azure.com")
114+
github_embed_model = os.getenv("GITHUB_EMBED_MODEL", "text-embedding-3-small")
115+
logger.info(f"Using GitHub Models with base URL: {github_base_url}, embedding model: {github_embed_model}")
116+
openai_embed_client = openai.AsyncOpenAI(
117+
base_url=github_base_url,
118+
api_key=os.getenv("GITHUB_TOKEN"),
119+
)
102120
else:
103121
logger.info("Setting up OpenAI client for embeddings using OpenAI.com API key")
104122
openai_embed_client = openai.AsyncOpenAI(api_key=os.getenv("OPENAICOM_KEY"))

src/backend/fastapi_app/routes/api_routes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def similar_handler(
6868
f"SELECT *, {context.embedding_column} <=> :embedding as DISTANCE FROM {Item.__tablename__} "
6969
"WHERE id <> :item_id ORDER BY distance LIMIT :n"
7070
),
71-
{"embedding": item.embedding_3l, "n": n, "item_id": id},
71+
{"embedding": getattr(item, context.embedding_column), "n": n, "item_id": id},
7272
)
7373
).fetchall()
7474

src/backend/fastapi_app/update_embeddings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ async def update_embeddings(in_seed_data=False):
2929
embedding_column = os.getenv("AZURE_OPENAI_EMBEDDING_COLUMN", "embedding_3l")
3030
elif OPENAI_EMBED_HOST == "ollama":
3131
embedding_column = os.getenv("OLLAMA_EMBEDDING_COLUMN", "embedding_nomic")
32+
elif OPENAI_EMBED_HOST == "github":
33+
embedding_column = os.getenv("GITHUB_EMBEDDING_COLUMN", "embedding_3l")
3234
else:
3335
embedding_column = os.getenv("OPENAICOM_EMBEDDING_COLUMN", "embedding_3l")
3436
logger.info(f"Updating embeddings in column: {embedding_column}")

tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def mock_session_env_openai(monkeypatch_session):
9595
monkeypatch_session.setenv("OPENAICOM_KEY", "fakekey")
9696
monkeypatch_session.setenv("OPENAICOM_CHAT_MODEL", "gpt-3.5-turbo")
9797
monkeypatch_session.setenv("OPENAICOM_EMBED_MODEL", "text-embedding-3-large")
98-
monkeypatch_session.setenv("OPENAICOM_EMBED_MODEL_DIMENSIONS", "1024")
98+
monkeypatch_session.setenv("OPENAICOM_EMBED_DIMENSIONS", "1024")
9999
monkeypatch_session.setenv("OPENAICOM_EMBEDDING_COLUMN", "embedding_3l")
100100

101101
yield

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy