Generative AI Toolkit for SAP HANA Cloud
About this project
Generative AI Client for SAP HANA Cloud is an extension of the existing HANA ML Python client library, mainly focusing on GenAI and related use cases. It includes many leading-edge GenAI related open source libraries and provides seamless integration with HANA ML, HANA vector engine, and other SAP GenAI Hub SDK, see our Introduction, Notebook and Documentation.
Requirements and Setup
The prerequisites for using the Generative AI Toolkit for SAP HANA Cloud are listed at Prerequisites.
The Generative AI Toolkit for SAP HANA Cloud is available as a Python package. You can install it via pip:
pip install hana-ai
ContextAgent
The toolkit includes a file-based ContextAgent for conversational forecasting and data-preparation workflows with Markdown-backed memory, tool calling, and runtime-selectable skills.
Core ContextAgent skills include:
data_ingestion_and_dataset_preparationfor CSV import and time-ordered train, test, and validation table creationtimeseries_data_profilingfor dataset reports and statistical checks before model selectiontimeseries_forecastingfor single-series train, predict, score, and plot workflowsprediction_result_analysisfor predicted-versus-actual comparison and quality analysisoutlier_detection_and_repair_prepfor anomaly inspection before model trainingmassive_forecastingfor grouped forecasting across many related seriesmodel_lifecycle_and_artifactsfor listing, deleting, and packaging saved modelshana_dataframe_fallbackfor SQL transformations (Python fallback requires explicit trusted-host opt-in)
Tools
The toolkit exposes HANAML-oriented tools for data preparation, profiling, forecasting, evaluation, artifact generation, and grouped forecasting workflows.
Core forecasting and analysis tools include:
import_csv_to_table,split_table_for_forecasting,fetch_datats_dataset_report,ts_check,stationarity_test,trend_test,seasonality_test,white_noise_testautomatic_timeseries_fit_and_save,automatic_timeseries_load_model_and_predict,automatic_timeseries_load_model_and_scoreadditive_model_forecast_fit_and_save,additive_model_forecast_load_model_and_predict,intermittent_forecastts_outlier_detection,ts_make_future_table,forecast_line_plot,accuracy_measurelist_models,delete_models,cap_artifacts,hdi_artifactsSelectStatement_to_table
Grouped and massive forecasting tools include:
massive_ts_check,massive_ts_outlier_detectionmassive_automatic_timeseries_fit_and_save,massive_automatic_timeseries_load_model_and_predict,massive_automatic_timeseries_load_model_and_scoremassive_additive_model_forecast_fit_and_save,massive_additive_model_forecast_load_model_and_predictts_make_future_table_for_massive_forecast
See the ContextAgent notebook for an end-to-end example at nutest/testscripts/demo/e2e_scenarios/context_agent.ipynb.
Python execution trust boundary
python_hanaml_exec is disabled by default and is not included in the default
HANAMLToolkit tool list, including used_tools='all', name-based selection, and
connection refreshes. Directly constructed instances also refuse to execute code
unless the host explicitly opts in. Tool-call arguments cannot enable execution.
This tool is not a sandbox. Code runs in the host process with its filesystem,
network, and HANA database permissions. The AST checks and reduced builtins are
best-effort guardrails only: full pandas/hana-ml objects support file I/O and raw
database access, and sql() does not enforce SQL authorization. There is no
execution timeout or resource isolation.
Applications that deliberately run fully trusted code from trusted callers
must construct PythonHanaMLExecTool(connection_context=cc, allow_dangerous_code=True)
from hana_ai.tools.hana_ml_tools.python_exec_tools and register that instance
using toolkit.add_custom_tool(tool). Never expose an enabled instance to
untrusted agent or MCP callers. Untrusted-code execution requires a separately
designed OS-level isolation boundary, scoped credentials, and resource limits;
do not rely on this tool's syntax checks for containment.
SQL agent deployment boundary
The SQL agent requires an explicit schema or table allowlist. For example, pass
schema="APP_READ" or include_tables=["SALES_VIEW"] to
create_hana_sql_agent() and create_hana_sql_toolkit(). The application rejects
queries outside that configured scope, but this parser-level check is defense in
depth and does not replace HANA authorization.
Run SQL agents with a dedicated HANA technical user or role that has only the
required SELECT privileges on approved schemas, tables, or restricted views. Do
not grant DDL/DML, unrestricted cross-schema access, or procedure execution unless
the application explicitly needs it. Validate effective privileges against the
target HANA deployment as part of release testing. Views and synonyms must be
reviewed together with the privileges of their underlying objects.
MCP transport and vector-store security defaults
Environment-built HANA connections and runtime connection updates explicitly enable
TLS encryption and certificate validation by default, including omitted/null update
options. Configure the required trust material. Runtime admin tools remain host-opt-in
and require authentication over HTTP; remote MCP also requires HTTPS termination.
The HTTP client's insecure-network override requires the actual Boolean
allow_insecure_http=True, not a string such as "false". Stdio profiles must point
to trusted executables and arguments; shell interpreters and Windows batch/PowerShell
scripts are rejected even when listed in a profile. Keep those executables, scripts,
their directories, and the inherited environment under trusted host control.
Vector-store configuration is validated before metadata lookup or table creation. Table/schema names containing single quotes are rejected because the supported hana-ml metadata API interpolates them into SQL literals. Existing double-quote, NUL, and semicolon restrictions still apply. Ordinary case-sensitive names and query text containing apostrophes remain supported through safe encoding.
Support, Feedback, Contributing
This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.
Security / Disclosure
If you find any bug that may be a security problem, please follow our instructions at in our security policy on how to report it. Please do not create GitHub issues for security-related doubts or problems.
Code of Conduct
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.
Licensing
Copyright 2026 SAP SE or an SAP affiliate company and generative-ai-toolkit-for-sap-hana-cloud contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.
Metadata
Release files for hana-ai 1.1.26110100
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| hana_ai-1.1.26110100.tar.gz | 467.4 kB | With provenance | Details for hana_ai-1.1.26110100.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| hana_ai-1.1.26110100-py3-none-any.whl | Python 3 | none | any | Details for hana_ai-1.1.26110100-py3-none-any.whl |
Total release size: 1.2 MB
Release files / hana_ai-1.1.26110100.tar.gz
| Download URL | hana_ai-1.1.26110100.tar.gz |
|---|---|
| Size | 467.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6ce0a13c194adae0b2c771bf2cbb60a478725a171213e65448ef9941af84d94f
|
|
BLAKE2b-256 checksum How to use checksums |
c4690efc066ca48c15246b729d64d43def9ab48e87d4a63dfbef24798a4861f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / hana_ai-1.1.26110100-py3-none-any.whl
| Download URL | hana_ai-1.1.26110100-py3-none-any.whl |
|---|---|
| Size | 749.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c4991d0f4e42b25793dce4fcb0a7f394f970ef87d8db6ff6ba44baeb2cd983f
|
|
BLAKE2b-256 checksum How to use checksums |
fa61b8227a63f01faed453447a5893b7f3fa197b3765517e559cfb3cdd6c8b66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logSecurity for hana-ai 1.1.26110100
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for hana_ai-1.1.26110100.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.