加载CSV文件,使用自然语言(英文)提问。通过Anthropic、OpenAI或本地Ollama实现AI驱动的自然语言查询,无需SQL。
CSVBrain.是一项面向实际任务的技能,主要用于Version: 1.0.3. 授权人: @ The ShadowRose.License: MIT.;Description.;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
版本:1.0.3
作者:@TheShadowRose
许可证:MIT
加载 CSV 文件,并使用纯英文提问。通过 Anthropic、OpenAI 或本地 Ollama 提供 AI 驱动的自然语言查询能力,无需编写 SQL。
CSVBrain 解析 CSV 文件(支持逗号、分号或制表符分隔),自动分析数据结构,并支持通过结构化筛选条件或 AI 驱动的纯英文问题来查询数据。
https/http 模块。将 src/csv-brain.js 复制到您的项目中。
const { CSVBrain } = require('./src/csv-brain');
const { CSVBrain } = require('./src/csv-brain');
const brain = new CSVBrain();
const info = brain.load('sales.csv');
console.log(info);
// { rows: 1200, columns: 8, types: { month: 'text', revenue: 'number', ... } }
// 分析数据概要
const stats = brain.profile();
console.log(stats.revenue);
// { type: 'number', count: 1200, missing: 0, unique: 987, min: 12.5, max: 94200, avg: 8450.32 }
// 使用纯英文提问
const result = await brain.ask('What was our best month for revenue?');
console.log(result.answer);
// "Based on the data, March had the highest total revenue at $94,200."
console.log(result.model);
// "anthropic/claude-haiku-4-5"
new CSVBrain(options?)创建新实例。
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model |
string |
"anthropic/claude-haiku-4-5" |
ask() 方法的默认 AI 模型 |
const brain = new CSVBrain({ model: 'openai/gpt-4o-mini' });
load(filePath, options?)同步加载 CSV 文件。
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
delimiter |
string |
自动检测 | 强制指定分隔符 |
返回值:{ rows: number, columns: number, types: object }
const info = brain.load('data.csv');
const info2 = brain.load('data.tsv', { delimiter: 't' });
profile()获取所有列的统计概要信息。
返回值:以列名为键的对象,每个键对应一个对象,包含 type、count、missing、unique 字段;数值列额外包含 min、max、avg 字段。
const stats = brain.profile(); console.log(stats);
query(options)对已加载的数据执行结构化查询。
| 选项 | 类型 | 说明 |
|---|---|---|
filter |
{ column, operator, value } |
按条件筛选行。支持的操作符:>、<、>=、<=、=、contains |
sort |
{ column, order } |
按指定列排序。顺序可选:"asc" 或 "desc" |
limit |
number |
最多返回的行数 |
aggregate |
{ column } |
对数值列返回 count、sum、avg、min、max 聚合结果 |
// 筛选并排序
const topSales = brain.query({
filter: { column: 'revenue', operator: '>', value: 10000 },
sort: { column: 'revenue', order: 'desc' },
limit: 10
});
// 聚合
const totals = brain.query({
aggregate: { column: 'revenue' }
});
console.log(totals);
// { count: 1200, sum: 10140384, avg: 8450.32, min: 12.5, max: 94200 }
async ask(question, options?)就您的数据提出自然语言问题。需配置 AI 提供商 API 密钥(或运行本地 Ollama)。
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model |
string |
实例默认值 | 带提供商前缀的 AI 模型名 |
apiKey |
string |
从环境变量读取 | 覆盖默认 API 密钥 |
ollamaHost |
string |
"http://localhost:11434" |
Ollama 服务地址 |
返回值:{ answer: string, data: any, query: object|null, model: string }
// 使用 Anthropic(默认)
// 需设置 ANTHROPIC_API_KEY 环境变量
const result = await brain.ask('Which product category has the highest average price?');
console.log(result.answer);
// "Electronics has the highest average price at $342.50, followed by Appliances at $289.00."
// 使用 OpenAI
// 需设置 OPENAI_API_KEY 环境变量
const result2 = await brain.ask('How many orders were placed in Q4?', {
model: 'openai/gpt-4o-mini'
});
// 使用本地 Ollama(无需 API 密钥)
const result3 = await brain.ask('Summarize the sales trends', {
model: 'ollama/llama3'
});
将 API 密钥设为环境变量:
export ANTHROPIC_API_KEY="sk-ant-..."
可用模型:anthropic/claude-haiku-4-5、anthropic/claude-sonnet-4-20250514 等。
export OPENAI_API_KEY="sk-..."
可用模型:openai/gpt-4o-mini、openai/gpt-4o 等。
无需 API 密钥。只需在本地运行 Ollama:
ollama serve ollama pull llama3
可用模型:ollama/llama3、ollama/mistral 等。
可选:自定义主机地址:
export OLLAMA_HOST="http://192.168.1.100:11434"
若 AI 提供商不可用,ask() 将返回优雅的错误信息而非抛出异常:
const result = await brain.ask('What is the trend?');
if (result.answer.startsWith('AI unavailable:')) {
console.log('Falling back to manual query...');
const data = brain.query({ sort: { column: 'date', order: 'asc' } });
}
.csv).tsv、.txt)分隔符将自动从首行检测,也可手动指定。
注意:Excel 文件(
.xlsx、.xls)不支持。请先将电子表格导出为 CSV 格式。
query() 返回结果,自行实现文件写入逻辑。CSVBrain 按“原样”提供,遵循 MIT 许可证。AI 生成的答案可能并非始终准确,请务必对关键数据分析结果进行人工复核。调用 AI 接口可能产生相应服务商费用。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习