---
type: study
status: verified
created: 2026-08-11
updated: 2026-08-11
sensitivity: standard
tags:
  - study
  - langchain
  - python
  - integrations
  - agent
  - sap-hana
  - sparql
topic: SAP HANA SPARQL QA Agent
sources:
  - https://docs.langchain.com/oss/python/integrations/agents/sap_hana_sparql_qa_agent
last_verified: 2026-08-11
---
# SAP HANA SPARQL QA Agent

## 能力

`HanaSparqlQAAgent` 位于 `langchain-hana`，面向 SAP HANA Cloud triple store。它与固定 chain 不同：先通过 `retrieve_ontology` 动态取得 Turtle ontology，再反复生成/执行 SPARQL、解释结果，并可在失败或异常结果后自我修正。

```text
HanaRdfGraph + LLM
  → retrieve_ontology
  → execute_sparql
  → 观察结果/错误
  → 继续工具调用或形成答案
```

默认加入 `ModelRetryMiddleware(max_retries=3)` 和 `ToolRetryMiddleware(max_retries=2)`，用于限制失败重试；可替换 system prompt、追加 tools/middleware，并选择是否包含默认项。页面示例用 `agent.stream(..., stream_mode="values")` 逐状态事件观察 agent loop，这不是数据库结果逐行流。

## 安装与认证

安装 `langchain_hana`，用 `hdbcli.dbapi` 连接 HANA，配置 address/port/user/password、`graph_uri` 和 ontology。模型可来自 SAP GenAI Hub proxy 或其他 LangChain chat model。数据库密码只通过 secret 注入，连接与模型身份分别最小授权。

## 生产风险

- 动态 ontology 和迭代 query 提高适应性，也扩大 prompt injection、数据枚举和高成本循环风险。
- `execute_sparql` 使用只读数据库账号，只允许 SELECT/ASK 等批准类型，限制 graph、结果数、timeout 和最大 agent steps。
- 默认 retry 不是副作用幂等或无限循环的完整保证；按错误类型决定是否重试并设置总 deadline/预算。
- ontology 只暴露当前租户/角色可见 schema；query/result 和中间 reasoning 不直接回显敏感数据。
- 答案保留生成 SPARQL、result count 和 graph/version provenance；空结果不得让模型补造。

## 验证边界

已读取唯一官方路由并核对默认工具、middleware、安装和 stream 示例。没有连接 HANA triple store 或执行真实查询，权限、方言、性能和重试行为尚未运行验证。

