Observed since 21 Oct, 10:34 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
aidu-ai-llm
LLM abstraction layer for the AIDu ecosystem.
Small Python LLM playground from PHBern to help people to understand how to build AI-Tutors
with:
src/aidu/ai/llmserve/app.pyweb/pip install aidu-ai-llm aidu-support
then run the example app:
aidu-ai-llm-example
The following tools are required to build and run the project:
uv replaces pip, venv, etc. → state of the art: no manual environment activation needednpm is included with Node.js, so you don’t need to install it separatelyCopy .env_example to .env and add your OpenAI Token there.
When you have ensured the prerequisites, this should work. Clean up, install dependencies, build frontend, and run the server:
make clean # clean up python backend and web frontend
make web.install # install web frontend dependencies
make web.build # build web frontend
make install # install python dependencies
make serve # run FastAPI server
Open: http://localhost:8000
Then you can interact with the chat interface.
serve/
app.py FastAPI app (chat/session endpoints + static web mount)
src/aidu/ai/llm/
client.py OpenAI client wrapper
requester.py Base class interacting with ai client
builder.py Prompt template builder
safeformat.py Safe string formatting helpers
tool_registry.py Tool registration/execution helpers
spec.py Plugin spec definitions
evaluator.py Evaluator overloads Requestor
test/
curl_tests.sh Curl-based API smoke checks
web/
index.html Chat page shell
src/main.ts Browser chat logic
HELP.md License/help notes
make smoke.client # runs smoke test on a individual file
make smoke.requester # runs smoke test on a individual file
make smoke.actor # runs smoke test on a individual file
make serve # run FastAPI server
make curl # run curl tests against above server
cd web && make clean # clean up web frontend
cd web && make install # install frontend deps
cd web && make build # build frontend
OPENAI_API_KEY in your environment (or .env)./sessions/....Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
aidu-supportEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | aidu-support | runtime |
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | fastapi>=0.110.0 | runtime |
google-genaiEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | google-genai>=0.3.0 | runtime |
openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | openai<2.0.0,>=1.0.0 | runtime |
pluggyEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | pluggy>=1.0 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0 | runtime |
python-dotenvEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | python-dotenv<1.0.0,>=0.19.0 | runtime |
requestsEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | requests>=2.31.0 | runtime |
richEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | rich>=14.3.2 | runtime |
sympyEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | sympy>=1.11.0 | runtime |
uvicornEnvironment{
"extras": "standard",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | uvicorn[standard]>=0.29.0 | runtime |
bdist_wheel · 1,043.83 KB · Python py3
sdist · 992.16 KB · Python source
Observed since 21 Oct, 10:34 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:bc8f58da85aea76cdf076a325368d00d8efa266dd4aa257360f1abfc0b1030e4