SQLite-Utils-Ask: 사용자가 쿼리 데이터를 위해 SQLite 데이터베이스 및 CSV/JSON 파일을 쿼리할 수 있습니다.

최신 AI 리소스9개월 전에 게시 됨 AI 공유 서클
2K 00

일반 소개

SQLite-Utils-Ask는 사용자가 LLM(대규모 언어 모델)을 사용해 SQLite 데이터베이스와 CSV/JSON 파일에 대해 질문과 답변 데이터 쿼리를 수행할 수 있도록 설계된 강력한 도구입니다. 이 도구는 사용자의 질문에 따라 적절한 SQL 쿼리를 자동으로 생성하고 쿼리를 실행하여 결과를 반환함으로써 데이터 분석 및 처리 프로세스를 크게 간소화할 수 있습니다.

 

기능 목록

  • 자연어 질문자연어를 통해 데이터베이스의 데이터에 대해 질문하면 도구가 자동으로 해당 SQL 쿼리를 생성합니다.
  • 데이터베이스 호환성간편한 데이터 관리 및 쿼리를 위해 SQLite 데이터베이스를 지원합니다.
  • CSV/JSON 파일 처리CSV, TSV 또는 JSON 파일의 직접 쿼리를 지원합니다.
  • 다중 문서 검색여러 문서에 대한 연합 쿼리를 지원합니다.
  • 명령줄 도구: 사용자가 쿼리를 빠르게 실행할 수 있는 사용하기 쉬운 명령줄 인터페이스를 제공합니다.
  • 플러그인 지원sqlite-utils와 같은 도구와 통합하여 기능 및 애플리케이션 시나리오를 확장할 수 있습니다.

터미널에서 SQLite 데이터베이스 및 CSV/JSON 파일에 대한 질문하기

저는 sqlite-utils CLI 도구를 개발 중입니다.컴퓨터의 SQLite 데이터베이스와 CSV/JSON 파일에 직접 인간 언어로 질문할 수 있는 새로운 플러그인을 구축했습니다.

이름은 sqlite-utils-ask입니다. 다음과 같이 설치합니다:

sqlite-utils 安装 sqlite-utils-ask

환경 변수에서 API 키를 가져옵니다.OPENAI_API_KEY를 설치하거나 LLM을 설치하고LLM 키 설정 오픈AI키를 구성 파일에 저장합니다.

그러면 다음과 같이 사용할 수 있습니다:

curl -O https://datasette.io/content.db
sqlite-utils 询问 content.db “ 2024 年 sqlite-utils pypi 下载量是多少?”

이 명령은 제공된 데이터베이스 파일의 SQL 스키마를 추출하여 질문과 함께 LLM을 통해 전송하고, SQL 쿼리를 반환한 후 실행하여 결과를 생성합니다.

모든 것이 순조롭게 진행되면 다음과 같은 대답이 나옵니다:

SELECT SUM(downloads)
FROM stats
WHERE package = 'sqlite-utils' AND date >= '2024-01-01' AND date < '2025-01-01';
[
{
"SUM(downloads)": 4300221
}
]

구문 오류로 인해 SQL 쿼리 실행이 실패하면 해당 오류를 다시 모델에 전달하여 수정하고 최대 세 번까지 재시도한 후 포기합니다.

증가-v/--verbose를 클릭하면 정확한 프롬프트를 확인할 수 있습니다:

System prompt:
You will be given a SQLite schema followed by a question. Generate a single SQL
query to answer that question. Return that query in a ```sql ... ```
fenced code block.
Example: How many repos are there?
Answer:
```sql
select count(*) from repos

프롬프트.
...
테이블 생성 [통계] (
[패키지] 텍스트,
[날짜] 텍스트,
[다운로드] INTEGER,
기본 키 ([패키지], [날짜])
);
...
2024년 SQLITE-UTILS PYPI 다운로드 수는 얼마나 될까요?

我已将上述内容截断为仅包含相关表 - 它实际上包含了该数据库中每个表的完整模式。
默认情况下,该工具只会将该数据库架构和您的问题发送给 LLM。如果您添加该`-e/--examples`选项,它还将为该架构中的每个文本列包含五个公共值,平均长度小于 32 个字符。这有时可以帮助获得更好的结果,例如,为`state`列发送值“CA”和“FL”和“TX”可以提示模型应该在查询中使用州缩写而不是全名。
#### 询问 CSV 和 JSON 数据的问题
核心`sqlite-utils`CLI 通常直接针对 SQLite 文件运行,但三年前我添加了使用[sqlite-utils memory](https://simonwillison.net/2021/Jun/19/sqlite-utils-memory/)命令直接针对 CSV 和 JSON 文件运行 SQL 查询的功能。其工作原理是在执行 SQL 查询之前将数据加载到内存 SQLite 数据库中。
我决定重用该机制来直接针对 CSV 和 JSON 数据启用 LLM 提示。
该`sqlite-utils ask-files`命令如下所示:
```shell
sqlite-utils ask-files transaction.csv “按年计算的总销售额”

이 명령은 하나 이상의 파일을 허용하며, CSV, TSV 및 JSON 형식을 혼합하여 제공할 수 있습니다. 제공된 각 파일은 다른 테이블로 가져와서 필요한 경우 모델에서 조인 쿼리를 구성할 수 있습니다.

구현 참고 사항

플러그인의 핵심 구현은 대략 다음과 같습니다.250줄의 파이썬 코드사용sqlite-utils register_commands()추가할 플러그인 후크ask노래로 응답ask-files명령.

LLM을 종속성으로 추가하고 LLM의Python API를 사용하여 모델과의 대화의 세부 사항을 추상화할 수 있습니다. 즉, 모델과의 대화에서sqlite-utils-askLLM 또는 해당 플러그인에서 지원하는 모든 모델을 사용할 수 있습니다. Claude 3.5 Sonnet이 프롬프트를 실행하면 다음을 수행할 수 있습니다:

sqlite-utils 安装 llm-claude-3
sqlite-utils 询问 content.db “计算新闻表中的行数” -m claude-3.5-sonnet

동일한 스키마에 대해 여러 질문을 실행하면 동일한 긴 힌트 접두사를 여러 번 보내게 되는데, 이 경우 OpenAI의 힌트 캐싱이 자동으로 작동하여 해당 입력 토큰에 대해 50% 할인을 제공해야 합니다.

그런 다음 실제 수치를 계산해 보니 다음과 같은 결과가 나왔습니다.gpt-4o-mini4,000개의 토큰 힌트(꽤 큰 SQL 스키마)를 캐싱하지 않아도 비용이 10분의 1도 안 될 정도로 저렴합니다. 따라서 이러한 캐시 절감 효과는 언급할 가치조차 없습니다!

© 저작권 정책
AiPPT

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...