Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ jobs:
# Run even if make test fails for coverage reports
# TODO: select a better xml results displayer
- name: Archive test results coverage results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: always()
with:
name: test_results
path: tests-results.xml
- name: Archive code coverage results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: always()
with:
name: code-coverage-report
Expand Down
14 changes: 8 additions & 6 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions private_gpt/components/embedding/embedding_component.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,22 @@ def __init__(self, settings: Settings) -> None:
api_key=api_key,
model=model,
)
case "avian":
try:
from llama_index.embeddings.openai import ( # type: ignore
OpenAIEmbedding,
)
except ImportError as e:
raise ImportError(
"Avian dependencies not found, install with `poetry install --extras embeddings-avian`"
) from e

avian_settings = settings.avian
self.embedding_model = OpenAIEmbedding(
api_base=avian_settings.api_base,
api_key=avian_settings.api_key,
model=avian_settings.embedding_model,
)
case "mock":
# Not a random number, is the dimensionality used by
# the default embedding model
Expand Down
15 changes: 15 additions & 0 deletions private_gpt/components/llm/llm_component.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,5 +221,20 @@ def wrapper(*args: Any, **kwargs: Any) -> Any:
self.llm = Gemini(
model_name=gemini_settings.model, api_key=gemini_settings.api_key
)
case "avian":
try:
from llama_index.llms.openai import OpenAI # type: ignore
except ImportError as e:
raise ImportError(
"Avian dependencies not found, install with `poetry install --extras llms-avian`"
) from e

avian_settings = settings.avian
self.llm = OpenAI(
api_base=avian_settings.api_base,
api_key=avian_settings.api_key,
model=avian_settings.model,
timeout=avian_settings.request_timeout,
)
case "mock":
self.llm = MockLLM()
26 changes: 26 additions & 0 deletions private_gpt/settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ class LLMSettings(BaseModel):
"mock",
"ollama",
"gemini",
"avian",
]
max_new_tokens: int = Field(
256,
Expand Down Expand Up @@ -205,6 +206,7 @@ class EmbeddingSettings(BaseModel):
"mock",
"gemini",
"mistralai",
"avian",
]
ingest_mode: Literal["simple", "batch", "parallel", "pipeline"] = Field(
"simple",
Expand Down Expand Up @@ -280,6 +282,29 @@ class GeminiSettings(BaseModel):
)


class AvianSettings(BaseModel):
api_base: str = Field(
"https://api.avian.io/v1",
description="Base URL of Avian API.",
)
api_key: str = Field(
description="Avian API key. Get one at https://avian.io.",
)
model: str = Field(
"deepseek/deepseek-v3.2",
description="Avian model to use. Options: 'deepseek/deepseek-v3.2', "
"'moonshotai/kimi-k2.5', 'z-ai/glm-5', 'minimax/minimax-m2.5'.",
)
embedding_model: str = Field(
"text-embedding-ada-002",
description="Avian embedding model to use.",
)
request_timeout: float = Field(
120.0,
description="Time elapsed until Avian server times out the request. Default is 120s.",
)


class OllamaSettings(BaseModel):
api_base: str = Field(
"http://localhost:11434",
Expand Down Expand Up @@ -598,6 +623,7 @@ class Settings(BaseModel):
sagemaker: SagemakerSettings
openai: OpenAISettings
gemini: GeminiSettings
avian: AvianSettings
ollama: OllamaSettings
azopenai: AzureOpenAISettings
vectorstore: VectorstoreSettings
Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,14 @@ llms-ollama = ["llama-index-llms-ollama"]
llms-sagemaker = ["boto3"]
llms-azopenai = ["llama-index-llms-azure-openai"]
llms-gemini = ["llama-index-llms-gemini"]
llms-avian = ["llama-index-llms-openai"]
embeddings-ollama = ["llama-index-embeddings-ollama"]
embeddings-huggingface = ["llama-index-embeddings-huggingface", "einops"]
embeddings-openai = ["llama-index-embeddings-openai"]
embeddings-sagemaker = ["boto3"]
embeddings-azopenai = ["llama-index-embeddings-azure-openai"]
embeddings-gemini = ["llama-index-embeddings-gemini"]
embeddings-avian = ["llama-index-embeddings-openai"]
embeddings-mistral = ["llama-index-embeddings-mistralai"]
vector-stores-qdrant = ["llama-index-vector-stores-qdrant"]
vector-stores-clickhouse = ["llama-index-vector-stores-clickhouse", "clickhouse_connect"]
Expand Down
17 changes: 17 additions & 0 deletions settings-avian.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
server:
env_name: ${APP_ENV:avian}

llm:
mode: avian
max_new_tokens: 512
context_window: 131072
temperature: 0.1

embedding:
mode: avian
ingest_mode: simple

avian:
api_base: ${AVIAN_API_BASE:https://api.avian.io/v1}
api_key: ${AVIAN_API_KEY:}
model: deepseek/deepseek-v3.2
7 changes: 7 additions & 0 deletions settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,10 @@ gemini:
api_key: ${GOOGLE_API_KEY:}
model: models/gemini-pro
embedding_model: models/embedding-001

avian:
api_base: ${AVIAN_API_BASE:https://api.avian.io/v1}
api_key: ${AVIAN_API_KEY:}
model: deepseek/deepseek-v3.2
embedding_model: text-embedding-ada-002
request_timeout: 120.0