学习笔记 · Obsidian

SAP HANA SPARQL QA Agent

LangChainPython

能力

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 或执行真实查询,权限、方言、性能和重试行为尚未运行验证。