学习笔记 · Obsidian
SAP HANA SPARQL QA Agent
能力
HanaSparqlQAAgent 位于 langchain-hana,面向 SAP HANA Cloud triple store。它与固定 chain 不同:先通过 retrieve_ontology 动态取得 Turtle ontology,再反复生成/执行 SPARQL、解释结果,并可在失败或异常结果后自我修正。
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 或执行真实查询,权限、方言、性能和重试行为尚未运行验证。