LLM输入格式CLI
该项目演示了七种高效序列化格式(CSV、ASON、JDON、TONL、TOON、YAML和XML)以及一个简单的Anthropic消息传递客户端。这 main.js 脚本充当一个交互式CLI,它会一直提示,直到您明确退出,允许您:
- 将任意JSON转换为支持的格式之一
- 向Anthropic发送提示
/v1/messages具有请求的确切标头的端点(x-api-key,anthropic-version,anthropic-beta)
先决条件
- Node.js 18+(用v22.21.0测试)
- npm(与Node一起提供)
- 如果您计划调用API,则为Anthropic API键(转换模式在没有它的情况下有效)
设置和运行
- 克隆存储库:
git clone https://github.com/tk34395/LLM-Input-Formats.git
cd LLM-Input-Formats- 安装依赖项:
npm install- 创建一个
.env旁边的文件main.js并添加:
ANTHROPIC_API_KEY=your-anthropic-api-key
NETSUITE_ACCOUNT_ID=account_id
NETSUITE_AUTHORIZATION_TOKEN=bearer-token只有当您希望MCP服务器信息包含在有效负载中时,才需要NetSuite变量。
- 放置要转换的JSON
input.txt(与目录相同main.js).每次运行都会覆盖output.txt使用最新编码的有效载荷。 - 作者任何Anthropic提示
llm-query.txt(当您选择选项2时,文件将逐字读取)。您可以使用 `占位符(自动替换为来自的内容output.txt)或者直接将有效载荷粘贴到文件中。有关详细信息,请参阅下面的“在LLM查询中包括有效载荷”部分。响应被持久化llm-query-response.txt`. - 启动CLI:
node main.js在CLI询问的每个操作之后 *您想退出吗?(Y/Y退出,其他内容继续)*。它将循环,直到您以 Y 或 y.
非交互模式(命令行参数)
您还可以通过传递命令行参数以非交互方式运行CLI。这允许您在没有提示的情况下将脚本作为单行执行:
将JSON转换为以下格式:
node main.js 1 哪里 `` 是:
1=CSV2=ASON3=JDON4=吨5=卡通6=YAML7=XML
示例:
node main.js 1 2 # Convert JSON to ASON
node main.js 1 6 # Convert JSON to YAML
node main.js 1 7 # Convert JSON to XML向Anthropic API发送请求:
node main.js 2笔记:
- 使用命令行参数时,脚本运行一次并自动退出(无退出提示)
- 如果你跑
node main.js没有争论,它像以前一样在交互模式下工作 - 如果提供的参数无效,则显示错误消息
CLI流(交互模式)
无参数运行时(node main.js),CLI以交互模式运行:
- 主菜单 –在以下选项之间进行选择:
- 1 将JSON转换为某种格式 - 2 向Anthropic发送提示
- 转换菜单 –如果你选择了选项1,你可以选择:
- CSV, ASON, JDON, TONL, TOON, YAML, XML,或 B 回去
- 输入文件 转换模式从以下位置读取JSON
input.txt;拟人模式从以下位置读取消息llm-query.txt。空白或缺少文件会取消操作,但会出错。 - 输出 –转换结果将写入
output.txt(并记录路径)。Anthropic调用将完整的JSON响应写入llm-query-response.txt除了控制台日志之外。
注: 对于非交互式执行,请参阅上面的“非交互式模式”部分。
格式化模块
每种格式都有一个小的专用模块,它公开了专注的编码/解码助手:
ason.js
- 用途 SmartCompressor 从 @ason-format/ason - encodeAson(data) 将JSON对象压缩为二进制安全ASON字符串 - decodeAson(asonString) 恢复原始对象
JDON.js
- 实现JDON解析器和序列化器 - encodeJdon(data) 将任何JSON值转换为紧凑的JDON(默认情况下为列式数组) - decodeJdon(jdonString) 返回解析后的JavaScript值
tonl.js
- 包裹 encodeTONL / decodeTONL 从 tonl 包裹 - encodeTonl(data) 发出TONL文本, decodeTonl(tonlString) 重建对象
toon.js
- 包裹 @toon-format/toon - encodeToon(data) → TOON字符串, decodeToon(toonString) → JavaScript值
csv.js
- 用途 json-2-csv 包裹 - encodeCsv(data) 将JSON对象/数组转换为CSV格式 - decodeCsv(csvString) 将CSV转换回JSON数组
yaml.js
- 用途 @catalystic/json-to-yaml 用于编码和 js-yaml 用于解码 - encodeYaml(data) 将JSON对象/数组转换为YAML格式 - decodeYaml(yamlString) 将YAML转换回JSON
xml.js
- 用途 jstoxml 用于编码和 fast-xml-parser 用于解码 - encodeXml(data) 将JSON对象/数组转换为XML格式 - decodeXml(xmlString) 将XML转换回JSON
这些助手被导入 main.js,保持CLI逻辑与各个编码库的解耦。
人类请求
- 端点:
https://api.anthropic.com/v1/messages - 标题:
x-api-key,anthropic-version: 2023-06-01,anthropic-beta: mcp-client-2025-04-04 - 有效载荷:
- 型号: claude-sonnet-4-5-20250929 - 消息包含具有缓存控制元数据的单个用户块 - 可选的 mcp_servers 在以下情况下添加条目 NETSUITE_ACCOUNT_ID 和 NETSUITE_AUTHORIZATION_TOKEN 可用的
在LLM查询中包括有效载荷
在LLM查询中包含有效载荷有两种选择:
选项A:使用 `` 占位符
此方法自动插入以下内容 output.txt 在您的查询中:
- 转换JSON –使用选项1将JSON从
input.txt任何格式。结果保存到output.txt. - 添加占位符 –In
llm-query.txt,包括 `` 您希望有效载荷出现在哪里。例如:
Create a sales order in NetSuite with below data:
- 发送请求 –当您选择选项2时,系统将:
- 检测 ` 占位符在 llm-query.txt - 阅读以下内容 output.txt - 替换所有出现的 ` 与实际有效载荷 - 将完整查询发送到Anthropic API
验证:
- 如果 `
存在于llm-query.txt,output.txt` 必须存在且不能为空 - 如果
output.txt在以下情况下缺失或为空 `` 如果使用,操作将失败,并显示描述性错误消息
选项B:直接有效载荷插入
或者,您可以直接将有效负载内容粘贴到 llm-query.txt:
- 复制您的有效载荷 –从复制有效载荷内容
output.txt或任何其他来源。 - 直接粘贴 –In
llm-query.txt,删除 `` (如果存在)并直接粘贴您的有效载荷。例如:
Create a sales order in NetSuite with below data:
442472024-01-15...- 发送请求 –当您选择选项2时,查询将按原样发送,不做任何修改。
注: 如果 ` 不存在于 llm-query.txt,查询按原样发送,不做任何修改,无论是否 output.txt` 存在。
如果API键丢失,CLI将显示指导并返回菜单,而不是崩溃。
故障排除
require未定义 –该项目使用ES模块("type": "module"在package.json).确保所有进口使用import ... from.- 缺失
.env–转换仍然有效,但在提供密钥之前,Anthropic调用将被禁用。 - 无效的JSON –CLI报告解析错误并再次询问;粘贴缩小的JSON以将输入保持在一行上。
