@Preview(value="3.9.1") public class Text2SqlSkill extends AbsSkill
该技能集成了企业级数据分析所需的深度适配与安全策略:
SqlDialect,支持对引号、分页、元数据提取等差异进行底层平替,确保 AI 编写的 SQL 具有极高执行率。| 限定符和类型 | 字段和说明 |
|---|---|
protected java.lang.String |
cachedSchemaInfo |
protected SqlDialect |
dialect |
protected java.util.Map<java.lang.String,java.util.List<java.lang.String>> |
globalRelations |
protected static org.slf4j.Logger |
LOG |
protected int |
maxContextLength |
protected int |
maxRows |
protected boolean |
readOnly |
protected SchemaMode |
schemaMode |
protected org.noear.solon.data.sql.SqlUtils |
sqlUtils |
protected java.util.List<java.lang.String> |
tableNames |
protected java.util.Map<java.lang.String,java.lang.String> |
tableRemarksMap |
| 构造器和说明 |
|---|
Text2SqlSkill(javax.sql.DataSource dataSource,
java.lang.String... tables) |
Text2SqlSkill(org.noear.solon.data.sql.SqlUtils sqlUtils,
java.lang.String... tables) |
| 限定符和类型 | 方法和说明 |
|---|---|
java.lang.String |
description()
获取技能描述
|
Text2SqlSkill |
dialect(SqlDialect dialect) |
java.lang.String |
executeSql(java.lang.String sql) |
protected java.lang.String |
extractSchemaInfo(java.util.List<java.lang.String> tables) |
java.lang.String |
getInstruction(Prompt prompt)
动态指令注入:生成并注入到 System Message 的描述性文本(如果使用 MD 层级,从第三级开始)
用于约束 AI 如何使用该技能下的工具
|
java.lang.String |
getTableSchema(java.lang.String tableName) |
java.util.Collection<FunctionTool> |
getTools(Prompt prompt)
动态工具注入:获取该技能挂载的所有功能工具
|
Text2SqlSkill |
maxContextLength(int length) |
Text2SqlSkill |
maxRows(int maxRows) |
java.lang.String |
name()
获取技能名称(默认类名)
|
void |
onAttach(Prompt prompt)
挂载钩子:技能被激活时触发
可用于初始化会话状态、审计日志记录或上下文预处理
|
Text2SqlSkill |
readOnly(boolean readOnly) |
Text2SqlSkill |
schemaMode(SchemaMode schemaMode) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitisSupportedprotected static final org.slf4j.Logger LOG
protected final org.noear.solon.data.sql.SqlUtils sqlUtils
protected final java.util.List<java.lang.String> tableNames
protected final java.util.Map<java.lang.String,java.lang.String> tableRemarksMap
protected java.util.Map<java.lang.String,java.util.List<java.lang.String>> globalRelations
protected SqlDialect dialect
protected java.lang.String cachedSchemaInfo
protected int maxRows
protected int maxContextLength
protected SchemaMode schemaMode
protected boolean readOnly
public Text2SqlSkill(javax.sql.DataSource dataSource,
java.lang.String... tables)
public Text2SqlSkill(org.noear.solon.data.sql.SqlUtils sqlUtils,
java.lang.String... tables)
public Text2SqlSkill maxRows(int maxRows)
public Text2SqlSkill maxContextLength(int length)
public Text2SqlSkill schemaMode(SchemaMode schemaMode)
public Text2SqlSkill readOnly(boolean readOnly)
public Text2SqlSkill dialect(SqlDialect dialect)
public java.lang.String name()
Skillpublic java.lang.String description()
Skillpublic java.lang.String getInstruction(Prompt prompt)
Skill@ToolMapping(name="execute_sql", description="\u6267\u884c\u5355\u6761 SELECT \u67e5\u8be2\u8bed\u53e5\u3002") public java.lang.String executeSql(@Param(value="sql") java.lang.String sql)
@ToolMapping(name="get_table_schema", description="\u83b7\u53d6\u7279\u5b9a\u8868\u7684\u8be6\u7ec6\u5217\u4fe1\u606f\u548c DDL") public java.lang.String getTableSchema(@Param(value="tableName") java.lang.String tableName)
protected java.lang.String extractSchemaInfo(java.util.List<java.lang.String> tables)