在 Emacs 中使用 gptel 与 Novita AI:全面指南

在 Emacs 中使用 gptel 与 Novita AI:全面指南

在 AI 开发快速演变的今天,将强大的语言模型集成到熟悉的开发环境中变得至关重要。本文将介绍开发者如何在基于 Emacs 的 LLM 客户端 gptel 中利用 Novita AI 的 API。通过结合 Novita AI 的先进模型与 gptel 的无缝 Emacs 集成,开发者能够在不离开首选文本编辑器的情况下显著提升 AI 驱动的工作流。

什么是 gptel

gptel 是一个专为 Emacs 用户设计的通用 LLM 聊天客户端。它支持多种模型和后端,能够在任何 Emacs 缓冲区中无缝运行。凭借统一的界面和就地使用方式,gptel 体现了 Emacs 的可扩展性和可访问性哲学。底层上,gptel 在可用时依赖 Curl 提供强大的 HTTP 能力,同时也支持 url-retrieve 以适应无外部依赖的环境。这种双重兼容性确保了 gptel 可以安装在广泛的 Emacs 配置中。

gptel 的功能

https://www.youtube.com/watch?v=bsRnh\_brggM

gptel 内置了旨在最大化生产力的功能:

  • 异步快速操作:将响应直接流式传输到 Emacs。
  • 多 LLM 支持:从多种模型中选择,例如 Mythomax、Llama 和 Qwen。
  • 可自定义工作流:使用简单的 API 修改 gptel 的操作。
  • 上下文感知交互:动态向查询添加区域、缓冲区或文件。
  • Markdown/Org 标记支持:有效格式化 LLM 响应。
  • 多模态支持:处理文本、图像和文档。
  • 会话管理:根据需要保存、恢复和分支会话。
  • 交互式查询调整:在发送前预览和修改提示。
  • 内省能力:在发送前检查并修改查询以确保准确性和相关性。
  • 可编辑对话:在对话过程中回退并编辑之前的提示或 LLM 响应。这些编辑会反馈给模型,实现动态调整。

如何下载 gptel

安装 gptel 很简单:

  1. 使用 Emacs 包管理器
    • 运行 M-x package-install RET gptel RET
    • 如需稳定版本,将 MELPA-stable 添加到包源。
  2. Straight
    • 在配置中添加 (straight-use-package 'gptel)

(可选)安装 markdown-mode 以获得更好的格式化和增强的聊天交互。

  1. 手动安装

    • GitHub 克隆仓库。
    • 在仓库目录上运行 M-x package-install-file RET
  2. 使用 Doom Emacs

    • packages.el 中添加
      (package! gptel)
    • config.el 中添加
      (use-package! gptel :config (setq! gptel-api-key "your key"))

    “your key” 可以是 API 密钥本身,或者(更安全)返回密钥的函数。设置 gptel-api-key 是可选的,如果未找到则会被要求输入密钥。

  3. 使用 Spacemacs

    • .spacemacs 文件中,将 llm-client 添加到 dotspacemacs-configuration-layers
      (llm-client :variables llm-client-enable-gptel t)

在 gptel 上访问 Novita AI 的 API

将 Novita AI 的 API 与 gptel 集成可解锁高级 LLM 功能:

  1. 在 Novita AI 的 LLM Playground 中免费测试各种 LLM。
  2. 导航至 Novita AI 的密钥管理 页面以获取用于 gptel 的 LLM API 密钥。
  3. 将 Novita AI 注册为后端:
(gptel-make-openai "NovitaAI"
  :host "api.novita.ai"
  :endpoint "/v3/openai"
  :key "your-api-key"
  :stream t
  :models '(
    gryphe/mythomax-l2-13b
    meta-llama/llama-3-70b-instruct
    meta-llama/llama-3.1-70b-instruct))
  1. "your-api-key" 替换为你的 Novita AI API 密钥。
  2. 将 Novita AI 设置为默认后端:
(setq
  gptel-model   'gryphe/mythomax-l2-13b
  gptel-backend
  (gptel-make-openai "NovitaAI"
    :host "api.novita.ai"
    :endpoint "/v3/openai"
    :key "your-api-key"
    :stream t
    :models '(
      mistralai/Mixtral-8x7B-Instruct-v0.1
      meta-llama/llama-3-70b-instruct
      meta-llama/llama-3.1-70b-instruct)))

如何使用 gptel

gptel 的命令灵活而直观:

  • 通用查询:使用 M-x gptel-send 发送光标之前的文本。响应将插入到下面,你可以无缝地继续对话。
  • 专用聊天缓冲区
    • 使用 M-x gptel 启动新会话或切换到现有会话。
    • 使用 C-c RET 交互式发送提示。
    • 轻松保存和恢复聊天会话,支持一致的工作流。
  • 动态修改行为:运行 C-u M-x gptel-send 以调整聊天参数,例如聊天提供者、后端或特定任务的系统消息。
  • 增强的 Org-mode 功能
    • 使用 Org 标题分支会话,实现结构化交互。
    • 使用 gptel-org-set-properties 在特定标题下声明聊天设置,创建可复现的 LLM 笔记本。
  • 多模态支持
    • 使用 gptel-add-file 或通过瞬态菜单将文本、图像或文档文件添加到对话上下文。这支持更丰富、上下文感知的查询。
    • 通过动态包含或排除区域、缓冲区或文件来管理上下文。

结论

通过将 gptel 与 Novita AI 的 API 结合,开发者可以访问强大、灵活的 AI 开发工具。无论是优化工作流还是探索新模型能力,gptel 和 Novita AI 的 API 都能使过程无缝且高效。准备好开始了吗?立即探索 LLM Playground

常见问题

我可以将 gptel 用于非标准工作流吗?

是的,gptel 提供了 gptel-request 函数,允许在 gptel-send 之外实现自定义工作流。

如何启用自动滚动?

将此内容添加到你的配置中:
(add-hook 'gptel-post-stream-hook 'gptel-auto-scroll)

如何更改提示/响应格式?

为特定模式自定义 gptel-prompt-prefix-alistgptel-response-prefix-alist

gptel 支持媒体吗?

是的,gptel 支持用于处理文本、图像和文档的多模态模型。

如何配置聊天缓冲区特定的选项?

你可以使用瞬态菜单为每个缓冲区设置聊天参数,如模型、后端和指令。调用 C-u M-x gptel-send 以交互方式访问这些设置。

什么是瞬态菜单,如何有效使用它?

瞬态菜单允许你动态调整 gptel 的行为,包括上下文、输入/输出重定向和查询偏好。通过调用 C-u gptel-sendgptel-menu 访问它。有关高级用法,请参阅 GitHub 仓库 中的示例和文档。我可以将 gptel 用于非标准工作流吗?是的,gptel 提供了 gptel-request 函数,允许在 gptel-send 之外实现自定义工作流。

如何启用自动滚动?

将此内容添加到你的配置中:
(add-hook 'gptel-post-stream-hook 'gptel-auto-scroll)

如何更改提示/响应格式?

为特定模式自定义 gptel-prompt-prefix-alistgptel-response-prefix-alist

gptel 支持媒体吗?

是的,gptel 支持用于处理文本、图像和文档的多模态模型。

Novita AI 是一个 AI 云平台,为开发者提供通过简单 API 部署 AI 模型的便捷方式,同时还提供经济可靠的 GPU 云用于构建和扩展。