Skip to content

Commit 3408672

Browse files
committed
init
1 parent 8c6bb28 commit 3408672

51 files changed

Lines changed: 4642 additions & 207 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/ci.yml‎

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
pull_request:
7+
8+
jobs:
9+
tests:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
python-version: ["3.10", "3.12"]
15+
steps:
16+
- uses: actions/checkout@v4
17+
- uses: actions/setup-python@v5
18+
with:
19+
python-version: ${{ matrix.python-version }}
20+
- name: Install dev dependencies
21+
run: python -m pip install -e "packages/alephantai[dev]" -e "packages/langchain-alephantai[dev]"
22+
- name: Run tests
23+
run: pytest -v
24+
- name: Run ruff
25+
run: ruff check .
26+
27+
optional-extras:
28+
runs-on: ubuntu-latest
29+
strategy:
30+
fail-fast: false
31+
matrix:
32+
extra: ["langchain", "llamaindex"]
33+
steps:
34+
- uses: actions/checkout@v4
35+
- uses: actions/setup-python@v5
36+
with:
37+
python-version: "3.12"
38+
- name: Install optional extra
39+
run: python -m pip install -e "packages/alephantai[${{ matrix.extra }}]"
40+
- name: Check dependencies
41+
run: python -m pip check
42+
- name: Smoke LangChain constructors
43+
if: matrix.extra == 'langchain'
44+
run: |
45+
python - <<'PY'
46+
from alephantai import AlephantGatewayContext
47+
from alephantai.langchain import create_chat_openai
48+
49+
llm = create_chat_openai(
50+
api_key="vk-test",
51+
model="gpt-4o-mini",
52+
context=AlephantGatewayContext(session_id="sess-ci"),
53+
)
54+
assert type(llm).__name__ == "ChatOpenAI"
55+
PY
56+
- name: Smoke LlamaIndex constructors
57+
if: matrix.extra == 'llamaindex'
58+
run: |
59+
python - <<'PY'
60+
from alephantai import AlephantGatewayContext
61+
from alephantai.llamaindex import create_openai_embedding, create_openai_llm
62+
63+
ctx = AlephantGatewayContext(session_id="sess-ci")
64+
llm = create_openai_llm(api_key="vk-test", model="gpt-4o-mini", context=ctx)
65+
embedding = create_openai_embedding(
66+
api_key="vk-test",
67+
model="text-embedding-3-small",
68+
context=ctx,
69+
)
70+
assert type(llm).__name__ == "OpenAI"
71+
assert type(embedding).__name__ == "OpenAIEmbedding"
72+
PY
73+
74+
langchain-package:
75+
runs-on: ubuntu-latest
76+
steps:
77+
- uses: actions/checkout@v4
78+
- uses: actions/setup-python@v5
79+
with:
80+
python-version: "3.12"
81+
- name: Install package with standard test dependencies
82+
run: python -m pip install -e "packages/alephantai" -e "packages/langchain-alephantai[dev]"
83+
- name: Run LangChain package tests
84+
run: pytest packages/langchain-alephantai/tests -m "not integration" -v
85+
- name: Smoke ChatAlephantAI constructor
86+
run: |
87+
python - <<'PY'
88+
from langchain_alephantai import ChatAlephantAI
89+
90+
llm = ChatAlephantAI(
91+
api_key="vk-test",
92+
model="gpt-4o-mini",
93+
session_id="sess-ci",
94+
)
95+
assert type(llm).__name__ == "ChatAlephantAI"
96+
assert llm.default_headers["Alephant-Session-Id"] == "sess-ci"
97+
PY

‎.gitignore‎

Lines changed: 20 additions & 207 deletions
Original file line numberDiff line numberDiff line change
@@ -1,218 +1,31 @@
1-
# Byte-compiled / optimized / DLL files
1+
# Python bytecode and caches
22
__pycache__/
3-
*.py[codz]
3+
*.py[cod]
44
*$py.class
55

6-
# C extensions
7-
*.so
6+
# Virtual environments
7+
.venv/
8+
venv/
9+
env/
10+
.env
11+
.env.*
812

9-
# Distribution / packaging
10-
.Python
13+
# Build and packaging outputs
1114
build/
12-
develop-eggs/
1315
dist/
14-
downloads/
15-
eggs/
16-
.eggs/
17-
lib/
18-
lib64/
19-
parts/
20-
sdist/
21-
var/
22-
wheels/
23-
share/python-wheels/
2416
*.egg-info/
25-
.installed.cfg
26-
*.egg
27-
MANIFEST
28-
29-
# PyInstaller
30-
# Usually these files are written by a python script from a template
31-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32-
*.manifest
33-
*.spec
34-
35-
# Installer logs
36-
pip-log.txt
37-
pip-delete-this-directory.txt
17+
.eggs/
3818

39-
# Unit test / coverage reports
40-
htmlcov/
41-
.tox/
42-
.nox/
43-
.coverage
44-
.coverage.*
45-
.cache
46-
nosetests.xml
47-
coverage.xml
48-
*.cover
49-
*.py.cover
50-
.hypothesis/
19+
# Test, lint, type-check, and coverage caches
5120
.pytest_cache/
52-
cover/
53-
54-
# Translations
55-
*.mo
56-
*.pot
57-
58-
# Django stuff:
59-
*.log
60-
local_settings.py
61-
db.sqlite3
62-
db.sqlite3-journal
63-
64-
# Flask stuff:
65-
instance/
66-
.webassets-cache
67-
68-
# Scrapy stuff:
69-
.scrapy
70-
71-
# Sphinx documentation
72-
docs/_build/
73-
74-
# PyBuilder
75-
.pybuilder/
76-
target/
77-
78-
# Jupyter Notebook
79-
.ipynb_checkpoints
80-
81-
# IPython
82-
profile_default/
83-
ipython_config.py
84-
85-
# pyenv
86-
# For a library or package, you might want to ignore these files since the code is
87-
# intended to run in multiple environments; otherwise, check them in:
88-
# .python-version
89-
90-
# pipenv
91-
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92-
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93-
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94-
# install all needed dependencies.
95-
# Pipfile.lock
96-
97-
# UV
98-
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99-
# This is especially recommended for binary packages to ensure reproducibility, and is more
100-
# commonly ignored for libraries.
101-
# uv.lock
102-
103-
# poetry
104-
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105-
# This is especially recommended for binary packages to ensure reproducibility, and is more
106-
# commonly ignored for libraries.
107-
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108-
# poetry.lock
109-
# poetry.toml
110-
111-
# pdm
112-
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113-
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114-
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115-
# pdm.lock
116-
# pdm.toml
117-
.pdm-python
118-
.pdm-build/
119-
120-
# pixi
121-
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122-
# pixi.lock
123-
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124-
# in the .venv directory. It is recommended not to include this directory in version control.
125-
.pixi
126-
127-
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128-
__pypackages__/
129-
130-
# Celery stuff
131-
celerybeat-schedule
132-
celerybeat.pid
133-
134-
# Redis
135-
*.rdb
136-
*.aof
137-
*.pid
138-
139-
# RabbitMQ
140-
mnesia/
141-
rabbitmq/
142-
rabbitmq-data/
143-
144-
# ActiveMQ
145-
activemq-data/
146-
147-
# SageMath parsed files
148-
*.sage.py
149-
150-
# Environments
151-
.env
152-
.envrc
153-
.venv
154-
env/
155-
venv/
156-
ENV/
157-
env.bak/
158-
venv.bak/
159-
160-
# Spyder project settings
161-
.spyderproject
162-
.spyproject
163-
164-
# Rope project settings
165-
.ropeproject
166-
167-
# mkdocs documentation
168-
/site
169-
170-
# mypy
171-
.mypy_cache/
172-
.dmypy.json
173-
dmypy.json
174-
175-
# Pyre type checker
176-
.pyre/
177-
178-
# pytype static type analyzer
179-
.pytype/
180-
181-
# Cython debug symbols
182-
cython_debug/
183-
184-
# PyCharm
185-
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
186-
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
187-
# and can be added to the global gitignore or merged into this file. For a more nuclear
188-
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
189-
# .idea/
190-
191-
# Abstra
192-
# Abstra is an AI-powered process automation framework.
193-
# Ignore directories containing user credentials, local state, and settings.
194-
# Learn more at https://abstra.io/docs
195-
.abstra/
196-
197-
# Visual Studio Code
198-
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
199-
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
200-
# and can be added to the global gitignore or merged into this file. However, if you prefer,
201-
# you could uncomment the following to ignore the entire vscode folder
202-
# .vscode/
203-
# Temporary file for partial code execution
204-
tempCodeRunnerFile.py
205-
206-
# Ruff stuff:
20721
.ruff_cache/
22+
.mypy_cache/
23+
.pyright/
24+
.coverage
25+
coverage.xml
26+
htmlcov/
20827

209-
# PyPI configuration file
210-
.pypirc
211-
212-
# Marimo
213-
marimo/_static/
214-
marimo/_lsp/
215-
__marimo__/
216-
217-
# Streamlit
218-
.streamlit/secrets.toml
28+
# Local editor and OS files
29+
.DS_Store
30+
.idea/
31+
.vscode/

‎CHANGELOG.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Changelog
2+
3+
## 0.1.0 - 2026-05-14
4+
5+
Initial Alephant Python SDK release.
6+
7+
- Added Gateway runtime helpers under the `alephantai` package.
8+
- Added automatic Alephant session header support with explicit cache, routing, and prompt header controls.
9+
- Added an OpenAI-compatible Gateway client defaulting to `https://ai.alephant.io/v1`.
10+
- Added Virtual Key Cockpit analytics client support for usage, budget, model cost, daily cost, scope, recent request, and health endpoints.
11+
- Added LangChain integration via `alephantai[langchain]`.
12+
- Added LlamaIndex LLM and embedding helpers via `alephantai[llamaindex]`.
13+
- Documented production hosts for Gateway, Cockpit, and lower-level Analytics API separation.

‎LICENSE‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Alephant AI
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

‎README.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Alephant Python Packages
2+
3+
This repository uses a monorepo layout for Alephant Python packages.
4+
5+
## Packages
6+
7+
- `packages/alephantai`: core Alephant Python SDK for gateway headers, analytics,
8+
OpenAI-compatible clients, and framework helpers.
9+
- `packages/langchain-alephantai`: standalone LangChain integration package
10+
boundary for official provider-package work.
11+
12+
## Development
13+
14+
Run the full test suite from the repository root:
15+
16+
```bash
17+
.venv/bin/python -m pytest -q
18+
```
19+
20+
Run package-specific tests from each package directory when preparing a release.

0 commit comments

Comments
 (0)