想分析政府合同数据又不想用云API?有个叫Arrow的Python小工具,直接本地SQLite搞定,连Ollama调用都设计成可断可续的。
- 核心功能:把SAM.gov的合同机会公开CSV数据灌进本地SQLite,实现列表、搜索和确定性排名,全程不调用任何云API。
- Ollama集成可选:如果设置了模型标签,会用format: json调用本地Ollama API,返回结构化输出并用Pydantic验证。
- 鲁棒性设计:即使Ollama没配置或返回错误JSON,应用依然能提供确定性的评分和解释,不硬依赖特定模型。
怎么跟Ollama打交道
这块配置挺灵活。默认Ollama主机地址是http://127.0.0.1:11434。你需要设置一个环境变量ARROW_ANALYSIS_MODEL,填上你本地拉取(ollama pull)的模型标签,比如qwen2.5:7b。它有两个命令会用这个模型去分析“为什么合适”和做摘要。
关键环境变量:
OLLAMA_HOST (默认 http://127.0.0.1:11434)
ARROW_ANALYSIS_MODEL - 用于why和summarize的模型标签
ARROW_NO_AUTO_OLLAMA=1 - 如果你不想应用在后台尝试启动ollama serve
如果没设置ARROW_ANALYSIS_MODEL,相关流程会明确提示失败,而不是拿个空字符串去调API。还有个细节,它支持一个旧别名ARROW_OLLAMA_MODEL,如果你原来就用这个变量名,也能无缝衔接。
为什么强调format: json
因为发给模型的提示是结构化的任务包,里面包含了资料、通知字段,还有一个本地计算好的deterministic_signals块。我们要求模型返回的JSON必须匹配我们定义的小模式(比如解释匹配度、做摘要)。用format: json这个参数能引导模型生成合法的JSON。即便这样,如果返回结果带了Markdown代码块标记,工具还会先剥离它们,如果JSON解析失败,还会用更严格的提示重试一次。
说白了,它不绑定某个特定的人设或模型。仓库里提供了示例Modelfile模板(Modelfile.example.*),但这只是参考,不是必须的。你只要把ARROW_ANALYSIS_MODEL指向任何一个能处理短文本结构化推理并输出JSON的本地模型标签就行。
项目地址:
https://github.com/frys3333/Arrow-contract-intelligence-organization
作者在Reddit帖子里还提了几个技术点:数据全在本地,核心使用不需要任何LLM供应商的API密钥;分析部分只需要一个本地拉取的模型,不要求特定的“Swan”或自定义名称;另外,工具还包含一个IPv4偏好帮助器,用于下载那个巨大的CSV文件(这部分和Ollama无关),在某些网络环境下能省不少事。
留言聊聊
你觉得这种“可断可续”的本地LLM集成设计,是处理敏感或离线数据的未来趋势吗?
来源:Reddit Ollama|原文:Arrow — local SAM contract CSV + SQLite; optional