ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

CLI-Anything 接入 Ollama:用命令行封装本地大模型 REST API 的完整实战指南

CLI-Anything 接入 Ollama:用命令行封装本地大模型 REST API 的完整实战指南 CLI-Anything 接入 Ollama用命令行封装本地大模型 REST API 的完整实战指南【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything导读本文基于 CLI-Anything 仓库中 ollama/agent-harness/OLLAMA.md 这一项目专项分析文档系统讲解如何把 Ollama 这一本地大模型运行时负责模型下载、量化、GPU/CPU 推理与内存管理封装为Agent 原生Agent-Native的命令行工具cli-anything-ollama。你将掌握Ollama REST API 的整体结构与端点语义、原生ollamaCLI 与 CLI-Anything 命令组的逐条映射、流式生成与模型拉取的 NDJSON 处理机制、采样参数options的传递方式以及无需启动服务即可运行的测试策略。读完即可在真实环境中完成服务检测 → 拉取模型 → 文本生成 → 多轮对话 → 向量嵌入 → 模型清理的完整本地 LLM 工作流。一、架构总览Ollama 是一个端口上的模型服务工厂Ollama 的本质是一个本地 LLM 运行时它通过 REST API 在localhost:11434上提供服务统一承担模型下载、量化、GPU/CPU 推理和内存管理。CLI-Anything 无需重复实现任何推理逻辑只做一件事——把已经清晰完备的 REST API 翻译成结构化命令行。OLLAMA.md 给出了服务端的分层结构┌──────────────────────────────────────────────┐ │ Ollama Server │ │ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │ │ │ Model │ │ Generate │ │ Embeddings │ │ │ │ Manager │ │ Engine │ │ Engine │ │ │ └────┬──────┘ └────┬─────┘ └──────┬──────┘ │ │ │ │ │ │ │ ┌────┴─────────────┴──────────────┴───────┐ │ │ │ REST API (port 11434) │ │ │ │ /api/tags /api/generate /api/embed │ │ │ │ /api/pull /api/chat /api/show │ │ │ │ /api/delete /api/copy /api/ps │ │ │ └─────────────────┬───────────────────────┘ │ └────────────────────┼─────────────────────────┘ │ ┌───────────┴──────────┐ │ llama.cpp backend │ │ GGUF model format │ │ GPU/CPU inference │ └──────────────────────┘从架构上可以看出Model Manager模型管理、Generate Engine文本/对话生成、Embeddings Engine向量嵌入三大能力统一由 REST 层暴露底层由 llama.cpp 后端驱动、以 GGUF 为模型格式完成 GPU/CPU 推理。这一分层设计直接决定了 CLI 的命令组划分——模型、生成、嵌入各成一族职责互不混淆。服务端默认地址与运行前提从源码层可以印证默认访问方式。在 ollama_backend.py 中定义了# Default Ollama server URL DEFAULT_BASE_URL http://localhost:11434同时模块顶部注释明确了两点关键前提Ollama 运行本地 HTTP 服务器默认无认证。这意味着本 CLI 面向本地/内网可信场景设计若连接公网实例安全认证需要由外部方案如反向代理另行处理。单元测试 test_core.py 也把DEFAULT_BASE_URL http://localhost:11434作为断言固定下来防止默认地址被意外改动。运行前提需要先安装并启动 Ollamaollama serveCLI 本身是REST API 客户端不内置服务端。这一点在 setup.py 的包描述中同样被强调Recommended: Ollama running at http://localhost:11434。二、CLI 策略REST API Wrapper 的四块拼图Ollama 原生 CLIollama run、ollama serve等面向人类交互而 CLI-Anything 的目标是让AI Agent 与重度终端用户能够以一条命令一个动作、输出机器可解析的方式驱动 Ollama。因此 OLLAMA.md 确立了四层实现策略requests—— 全部 API 调用的 HTTP 客户端Streaming NDJSON—— 生成与模型拉取过程中的流式增量输出Click CLI—— 与 API 面一一对应的结构化命令组REPL—— 面向探索性使用的交互模式。这四点在代码中一一对应。安装声明见 setup.pyinstall_requires[ click8.0.0, prompt-toolkit3.0.0, requests2.28.0, ],click承担全部命令组/参数解析requests承担 HTTPprompt-toolkit为可选依赖仅 REPL 模式需要提供 tab 补全与历史记录Python 版本要求3.10支持 3.10 / 3.11 / 3.12。安装方式在 setup.py 所在目录执行pip install -e .可编辑安装或发布到 PyPI 后pip install cli-anything-ollama。控制台入口在 setup.py 中注册entry_points{ console_scripts: [ cli-anything-ollamacli_anything.ollama.ollama_cli:main, ], },单一 HTTP 封装模块所有网络请求的唯一出口仓库把全部发请求的职责收敛在 ollama_backend.py 这一个模块里业务层models / generate / embeddings / server只调用它绝不直接触碰requests。这保证了统一超时、统一错误归一化。函数对应能力超时秒api_get(base_url, endpoint, ...)GET 请求如/api/tags、/api/ps、/30api_post(base_url, endpoint, data, ...)POST 请求如/api/show、/api/generate30api_delete(base_url, endpoint, data, ...)DELETE 请求如/api/delete30api_post_stream(base_url, endpoint, data, ...)流式 POST逐行解析 NDJSON300is_available(base_url)探测/是否返回 2005值得注意的细节可从源码确认URL 拼接容错f{base_url.rstrip(/)}{endpoint}会先剥掉 base URL 末尾的斜杠再拼端点因此传http://localhost:11434/与不带斜杠等价——test_core.py 专门验证了这一行为。响应内容协商/端点返回纯文本而非 JSON因此 api_get 会检查content-typeJSON 才resp.json()纯文本则包装成{status: ok, message: ...}。空响应兜底204 No Content如/api/copy、/api/delete成功或无内容时返回{status: ok}见 test_core.py。流式模式api_post_stream 使用streamTrue逐行读取并json.loads同时跳过空行NDJSON 中常见的分隔空行默认超时拉长到 300 秒以容忍长时间生成或大模型下载。错误归一化连接失败、HTTP 错误、超时都被归一化为携带可读提示的RuntimeError。连接失败时提示Is Ollama running? Start it with: ollama serveHTTP 错误信息包含状态码与响应正文。核心业务层与端点的一一对应业务层四个模块均以端点为单位封装函数映射关系清晰模块函数端点说明models.pylist_modelsGET /api/tags列出本地模型show_modelPOST /api/show模型详情参数/模板/许可pull_modelPOST /api/pull流式下载模型stream开关delete_modelDELETE /api/delete删除模型copy_modelPOST /api/copy复制/重命名模型running_modelsGET /api/ps列出内存中已加载模型generate.pygeneratePOST /api/generate补全式文本生成chatPOST /api/chat对话式完成stream_to_stdout——把流式块写到 stdout 并返回末块embeddings.pyembedPOST /api/embed生成嵌入向量server.pyserver_statusGET /服务存活检查versionGET /api/version服务端版本值得注意的细节pull_model的流式/非流式差异不是仅仅等待与否而是超时策略不同——非流式 pull 使用 600 秒超时models.py因为它在等待整包下载完成后一次性返回。OLLAMA.md 整理的完整端点表如下本文保留并补充方法语义EndpointMethodPurpose/GETServer status check/api/tagsGETList local models/api/showPOSTModel details/api/pullPOSTDownload model (streaming)/api/deleteDELETERemove model/api/copyPOSTCopy/rename model/api/psGETRunning models/api/generatePOSTText generation (streaming)/api/chatPOSTChat completion (streaming)/api/embedPOSTGenerate embeddings/api/versionGETServer version从代码结构看/api/show、/api/copy、/api/embed、/api/delete等需要携带请求体的操作统一使用 POST/DELETE JSON body 的形态/api/tags、/api/ps、/api/version等无状态查询则用 GET与 Ollama 官方 API 约定一致。三、命令映射原生 Ollama CLI → cli-anything-ollamaOLLAMA.md 给出了最核心的对照表——帮助熟悉ollama命令的用户零成本迁移。仓库实现中所有子命令通过 Click 的cli.group()/command注册在 ollama_cli.py 中命令组为model、generate、embed、server、session五个族Ollama CLICLI-Anythingollama listmodel listollama show namemodel show nameollama pull namemodel pull nameollama rm namemodel rm nameollama cp src dstmodel copy src dstollama psmodel psollama run model promptgenerate text --model name --prompt ...(no equivalent)generate chat --model name --message ...(no equivalent)embed text --model name --input ... [--input ...]ollama serve(external — must be running)这张表揭示了 CLI-Anything 相对原生 CLI 的三点增量显式拆分了补全与对话原生ollama run是混合入口CLI-Anything 将/api/generate与/api/chat拆成generate text/generate chat两条命令语义更精确更贴合 Agent 需要明确指定 API 形态的场景。新增嵌入通道原生 CLI 并无embed命令本 CLI 补上了对/api/embed的直接命令行访问。服务端保持外置ollama serve属于守护进程职责本 CLI 不替代、不内嵌只通过server status/server version探测其状态。全局选项--json与--host整个 CLI 提供两个全局级选项在 ollama_cli.py 的根命令上声明--json开启机器可读输出全局变量_json_output会贯穿所有子命令--host URL覆盖默认的http://localhost:11434用于连接远程/自定义端口实例。--host的值会写入全局_host并被各子命令透传给后端函数。交互式 REPL 内同样可执行带--host的命令来切换会话目标。四、模型参数optionsCLI 层可调采样旋钮OLLAMA.md 列出 CLI 已暴露的采样参数下表保留并补充了含义与取值边界ParameterTypeDescriptiontemperaturefloat采样温度0.0-2.0越高越发散top_pfloatNucleus核采样阈值保留累计概率达 p 的最小 token 集top_kintTop-k 采样仅从概率最高的 k 个 token 中采样num_predictint生成的最大 token 数repeat_penaltyfloat重复惩罚系数seedint随机种子用于可复现输出stoplist[str]停止序列列表从 CLI 代码看temperature、top_p、num_predict三项已经直接映射为命令参数。以 generate text 为例generate.command(text) click.option(--model, -m, model_name, requiredTrue, helpModel name) click.option(--prompt, -p, requiredTrue, helpInput prompt) click.option(--system, -s, defaultNone, helpSystem message) click.option(--no-stream, is_flagTrue, helpReturn complete response instead of streaming) click.option(--temperature, typefloat, defaultNone, helpSampling temperature) click.option(--top-p, typefloat, defaultNone, helpTop-p sampling) click.option(--num-predict, typeint, defaultNone, helpMax tokens to generate)参数收集逻辑为仅当用户显式给出才写入 options未给出的选项保持None不进请求体从而交由模型自身的默认 Modelfile 参数决定options {} if temperature is not None: options[temperature] temperature if top_p is not None: options[top_p] top_p if num_predict is not None: options[num_predict] num_predict这条按需注入策略最终在请求构造时体现为data[options] options见 generate.py并经由底层传给 llama.cpp 采样器。测试佐证test_core.py 的test_generate_builds_correct_payload断言了generate(http://localhost:11434, llama3.2, Hello, systemBe helpful, options{temperature: 0.5}, streamFalse)生成的请求体确实包含model、prompt、system、options.temperature与streamFalse——这证明 options 是从 CLI 一路无损透传到 HTTP 请求体的。提示top_k、repeat_penalty、seed、stop虽在 API 层受支持后端直接接受任意options字典但当前 CLI 尚未为其提供专属 flag。如需使用可从代码结构看需要通过扩展options或直接构造后端调用来注入这与文档Model Parameters列表的API 能力全集定位一致。流式 vs 非流式如何取舍generate text与generate chat都提供--no-stream开关且默认是流式输出逐 token 打印实时可见。此外还存在第三条隐含路径--json与流式互斥——当_json_output为真时即使不加--no-stream代码也会强制走非流式一次性取整段 JSON见 ollama_cli.py。流式块最终由 stream_to_stdout 处理它会区分两种响应形态/api/generate用顶层response字段、/api/chat用message.content字段将 token 逐个写入 stdout 并 flush同时在遇到done: true的末块时保存含total_duration、eval_count等元数据的最终结果。五、逐命令实战从拉模型到清理的完整闭环下面以 README.md 中记录的示例工作流为主线逐条给出可复制命令并解释底层行为。1. 服务探测与版本确认cli-anything-ollama server status cli-anything-ollama server versionserver status命中GET /若服务未启动后端会把连接失败转成 RuntimeErrorCLI 层捕获后在 stderr 输出Error: ...并以退出码 1 结束非 REPL 模式。这是 Agent 调用任何其他命令前应执行的第一条健康检查。2. 拉取模型# 默认流式拉取实时显示进度条 cli-anything-ollama model pull llama3.2 # 非流式等待完成后一次性返回 cli-anything-ollama model pull llama3.2 --no-stream流式拉取由 ollama_cli.py 驱动循环消费pull_model(..., streamTrue)产出的状态块仅在状态字符串变化时打印一行避免刷屏并在total 0时绘制由█/░组成的 30 格 ASCII 进度条与百分比。遇到块内带error字段则抛出 RuntimeError 中断。测试佐证test_core.py 模拟了pulling manifest → downloading(500/1000) → downloading(1000/1000) → verifying sha256 digest → writing manifest → success的典型拉取序列断言命令以 0 退出且输出Done同时test_pull_streaming_error验证中途{error: disk full}会令命令以退出码 1 失败——这确认了 CLI 对下载失败的显式处理。3. 查看模型cli-anything-ollama model list # 列出本地模型表格NAME/SIZE/MODIFIED cli-anything-ollama model show llama3.2 # 详情parameters/template/details cli-anything-ollama model ps # 当前已加载进内存的模型model list命中GET /api/tags。空列表时给出友好提示No models installed. Pull one with: model pull name不会报错见 ollama_cli.py。model ps命中GET /api/ps输出列包含 NAME / SIZE / PROCESSOR取自size_vram表示显存占用/ UNTILexpires_at模型卸载时间可直观判断哪些模型驻留内存。model show返回的details中包含format: gguf、family、parameter_size、quantization_level等字段——这也是确认模型文件底细的最快途径。测试佐证见 test_core.py其中test_show_nonexistent_model断言对不存在模型执行 show 会收到Ollama API error 404 on POST /api/show并以退出码 1 结束。4. 文本补全generate text# 流式默认 cli-anything-ollama generate text --model llama3.2 --prompt Write a haiku about coding # 带系统提示词与采样参数 cli-anything-ollama generate text --model llama3.2 \ --prompt Explain quantum computing \ --system You are a helpful physics tutor \ --temperature 0.7 --top-p 0.9 --num-predict 256 # 非流式适合脚本化消费 cli-anything-ollama generate text --model llama3.2 \ --prompt Say hello --no-stream底层对应 generate.py 的generate()请求体包含model、prompt、stream可选注入system、template、context、options。流式时每个块是{response: ..., done: false}形态最后一个done: true块附带total_duration、eval_count、load_duration等性能元数据。5. 多轮对话generate chat——原生 CLI 没有的能力# 单轮 cli-anything-ollama generate chat --model llama3.2 --message user:Hello! # 显式多轮按 role:content 逐个给出可重复 cli-anything-ollama generate chat --model llama3.2 \ --message user:What is Python? \ --message user:How does it compare to JavaScript? # 从 JSON 文件读取 messages 数组 cli-anything-ollama generate chat --model llama3.2 --file messages.json # 续接本轮会话历史 cli-anything-ollama generate chat --model llama3.2 \ --message user:Tell me more --continue-chatchat 的消息构造规则源码层面确认于 ollama_cli.py每个--message必须包含:分隔符冒号前是 role如user/assistant/system冒号后是内容role:content中多余冒号只切分第一处格式非法无冒号会抛出ValueError测试test_generate_chat_bad_format验证了以退出码 1 失败的行为两者都不提供既无--message也无--file同样报错--file优先级更高直接从 JSON 文件读取[{role: ..., content: ...}, ...]数组详见测试 test_core.py。会话记忆机制CLI 维护进程级全局_chat_historyollama_cli.py。流式 chat 完成后会把本轮完整消息与助手回复写入历史ollama_cli.py供--continue-chat或session history使用。6. 向量嵌入embed text——原生 CLI 没有的能力# 单条文本 cli-anything-ollama embed text --model nomic-embed-text --input Hello world # 批量嵌入重复 --input 即可一次请求返回多条向量 cli-anything-ollama embed text --model nomic-embed-text \ --input First text --input Second text底层 embeddings.py 请求POST /api/embedinput既可为字符串也可为字符串列表。CLI 层做了智能判定只给一个--input时发字符串多个时聚合为列表发送ollama_cli.py。人类可读输出会显示模型名、向量维度Dimensions、向量条数并预览首个向量的前 5 个值6 位小数——方便快速核对嵌入模型是否按预期工作。对应测试见 test_core.py。注意嵌入必须使用支持嵌入任务的模型如nomic-embed-text普通对话模型无法产出有效嵌入向量。7. 复制与清理cli-anything-ollama model copy llama3.2 my-llama # 复制出新名字204 空响应 → ok cli-anything-ollama model rm llama3.2 # 删除模型释放磁盘copy与rm成功时返回{status: ok}204 无内容兜底CLI 会打印Copied ... → .../Deleted: ...确认信息。8. 会话状态自省cli-anything-ollama session status # 显示 host / last_model / chat_history_length / json_output cli-anything-ollama session history # 打印当前进程内的 chat 历史单条 200 字符自动截断六、双输出模式人类可读表格与 Agent 可解析 JSON所有命令天然支持两种输出形态见 README.md Output Formats 一节其核心机制在 output()人类可读默认表格model list的 NAME/SIZE/MODIFIED、层级化键值打印_print_dict/_print_list递归缩进、进度条与彩色提示机器可读--json顶层--json开启后数据经json.dumps(data, indent2, defaultstr)输出为标准 JSON供 Agent 用json.loads直接解析。# 人类输出 cli-anything-ollama model list # Agent 消费的 JSON 输出 cli-anything-ollama --json model list cli-anything-ollama --json server status一个易被忽略的设计是错误信息也会随--json结构化。handle_error 装饰器在 JSON 模式下把异常序列化为{error: ..., type: runtime_error|异常类名}输出到 stdout非 JSON 模式则走 stderr 打印Error: ...无论哪种模式非 REPL 环境下都以退出码 1 结束。这样 Agent 同时拥有三种判断依据退出码、stdoutJSON与 stderr人类错误。测试 test_core.py 的test_generate_text_connection_error_json即验证了--json下 RuntimeError 会产出含type: runtime_error的 JSON。七、REPL 交互模式与自定义 Host交互式 REPL不带子命令直接运行即进入 REPLcli-anything-ollamaREPL 由 repl() 实现基于prompt-toolkit的会话皮肤ReplSkin定义于 repl_skin.py。特性包括启动时打印版本横幅ollama, version1.0.1输入行解析使用shlex.split支持带空格的引号字符串如generate text --model llama3.2 --prompt hello world解析失败时降级为简单splitREPL 内直接复用同一cli对象cli.main(args, standalone_modeFalse)因此 REPL 中所有命令与一次性模式行为一致特殊命令quit/exit/q退出、help显示命令速查表命令组速查REPL help 内容model:list|show|pull|rm|copy|psgenerate:text|chatembed:textserver:status|versionsession:status|history连接远程/非默认实例Ollama 默认监听本机 11434。若远程部署如局域网内的 GPU 宿主机用--host指定cli-anything-ollama --host http://192.168.1.100:11434 model list cli-anything-ollama --host http://192.168.1.100:11434 --json generate text \ --model llama3.2 --prompt Hello每次进程启动时的 host 由--host决定REPL 会话中也可切换。八、Agent 编程化调用规范当 AI Agent 或自动化脚本把cli-anything-ollama当作子进程调用时README.md 给出五条纪律也是仓库单元测试所固化的契约始终加--json获取可解析输出检查退出码——0 成功非 0 失败失败时解析 stderr获取错误信息JSON 模式下错误同时出现在 stdout 的error字段对 generate/chat 使用--no-stream一次性拿完整响应避免逐 token 半成品在其他命令前先server status确认服务在线可提前捕获连接类 RuntimeError。完整 Agent 工作流示例# ① 健康检查 cli-anything-ollama --json server status # ② 拉取模型若本地缺失 cli-anything-ollama model pull llama3.2 # ③ 文本补全非流式JSON 消费 cli-anything-ollama --json generate text \ --model llama3.2 --prompt Write a haiku about coding --no-stream # ④ 多轮对话脚本化带上下文 cli-anything-ollama --json generate chat \ --model llama3.2 \ --message user:What is Python? \ --message user:How does it compare to JavaScript? \ --no-stream # ⑤ 检索增强所需的嵌入向量 cli-anything-ollama --json embed text \ --model nomic-embed-text --input Hello world # ⑥ 资源巡检 cli-anything-ollama --json model ps # ⑦ 按需清理 cli-anything-ollama model rm llama3.2九、测试策略两级隔离验证OLLAMA.md 规划的两级测试在仓库中均有落地实现测试说明见 tests/TEST.md。第一级单元测试test_core.py无需 Ollama 服务通过unittest.mock.patch替换requests.get/post/delete或核心模块的api_*函数再以 Click 官方CliRunner驱动 CLI覆盖URL 构造api_get(http://localhost:11434/, /api/tags)实际请求http://localhost:11434/api/tags尾斜杠被剥离默认地址常量DEFAULT_BASE_URL被断言锁定输出格式化_format_size(0) 0 B、_format_size(2048) 2.0 KB、GB 级换算等CLI 参数解析每个命令组的--help均验证含全部子命令名--host、--json全局开关注入会话状态会话状态管理session status/session history的默认值与空历史行为错误处理路径连接错误 → RuntimeError → 退出码 1JSON 模式下产出{error: ..., type: ...}请求体正确性mock 后断言generate/chat/embed/copy/delete各自构造的 JSON payload 字段完整正确test_core.py流式解析构造iter_lines()的 NDJSON 字节序列验证api_post_stream正确产出 dict 块并跳过空行。运行python -m pytest cli_anything/ollama/tests/test_core.py -v第二级端到端测试test_full_e2e.py要求真实 Ollama 服务按 OLLAMA.md 的 Test Coverage PlanE2E 流程覆盖列表模型 → 拉取一个小模型 → 文本生成 → 对话补全 → 查看模型信息 → 嵌入 → 删除模型。运行前需确保ollama serve已启动python -m pytest cli_anything/ollama/tests/test_full_e2e.py -v全量执行python -m pytest cli_anything/ollama/tests/ -v十、与 Agent 生态的衔接SKILL 文件在 CLI-Anything 的项目语境里每个 CLI 都配套一份供 LLM/Agent 消费的 SKILL.md。其 YAML front-matter 声明了技能名与一句话描述——Command-line interface for Ollama - Local LLM inference and model management via Ollama REST API正文按Installation → Usage → Command Groups → Examples组织。它与本文讲解的 OLLAMA.md 属于同一套代码的两个互补视图OLLAMA.mdSOP 文档面向维护者与研究者解释架构、API 映射、参数语义与测试策略SKILL.md技能文档面向 Agent 运行时只保留何时调用哪个命令的最小行动指令。二者共同服务于 CLI-Anything 的核心理念——让软件 Agent 原生化Making Software Agent-Native以稳定、可解析、可测试的 CLI 作为 Agent 与本地大模型之间的标准接口。十一、快速上手指南速查环境Python 3.10Ollama 已安装并以ollama serve运行在localhost:11434。安装pip install click requests prompt_toolkit # 运行依赖 pip install -e . # 在 ollama/agent-harness 目录执行开发安装 # 或从 PyPI: pip install cli-anything-ollama常用命令一览cli-anything-ollama --help # 总帮助 cli-anything-ollama server status # 健康检查 cli-anything-ollama model list # 本地模型列表 cli-anything-ollama model pull llama3.2 # 流式拉取 cli-anything-ollama generate text --model llama3.2 --prompt Hello # 流式生成 cli-anything-ollama generate chat --model llama3.2 --message user:Hi # 对话 cli-anything-ollama embed text --model nomic-embed-text --input Hi # 嵌入 cli-anything-ollama --json model list # Agent 友好 JSON cli-anything-ollama --host http://192.168.1.100:11434 model list # 远程实例 cli-anything-ollama # 进入 REPL测试python -m pytest cli_anything/ollama/tests/test_core.py -v # 无需服务 python -m pytest cli_anything/ollama/tests/test_full_e2e.py -v # 需 Ollama 运行结语OLLAMA.md 展示的是一条被反复验证的工程范式面对服务已具备优良 REST API的工具Agent-Native 化的最优解不是再造轮子而是写一个薄而严谨的 API Wrapper。cli-anything-ollama以五个命令组、单一 HTTP 封装模块、双输出模式与两级测试把本地 LLM 的完整生命周期——拉取、管理、推理、对话、嵌入、清理——收敛成了可编排、可断言、可被任何 Agent 消费的标准接口。理解这套代码的读者可以把它当作一个高质量模板迁移到任意具备 REST API 的桌面软件或本地服务上。【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表