README
OpenaiEx
是一个 Elixir 库,提供了一个社区维护的 OpenAI API 客户端。
本项目的部分内容是在 ChatGPT 3.5 和 4,以及 Claude 3 Opus 和 Claude 3.5 Sonnet 的协助下开发的。然而,所有代码都经过人工筛选(由我 😇)。
所有 API 端点和功能(截至 2024 年 5 月 1 日)均受支持,包括 Assistants API Beta 2 with Run streaming、DALL-E-3、文本转语音、聊天完成中的 tools support 和聊天完成端点的 流式版本。流式请求 取消 也受支持。
支持配置 Finch 池和 API 基础 URL。
与其他 elixir openai 包相比,存在一些差异。
- 我尝试忠实地镜像 官方 python API 的命名/结构。例如,已经在内存中的内容可以作为请求的一部分上传,不必从本地路径读取文件。
- 我是在为 livebook 的使用案例开发,因此只使用环境变量而没有任何配置。
- 支持带请求取消的流式 API 版本。
- 底层传输使用 finch 而不是 httpoison。
- 将第三方(包括本地)LLM 与 OpenAI 代理以及 Azure OpenAI API 视为合法的使用案例。
讨论和公告在 Elixir 论坛 的这个线程上。
安装和使用
有关安装说明和详细的使用示例,请查看 hexdocs 上的用户指南。该指南是一个 Livebook,您可以在不创建新项目的情况下运行其中的所有代码。几乎每个 API 调用都在用户指南中有一个运行示例。
也有 Livebook 示例:
- Streaming Orderbot 一个展示如何在聊天机器人中使用 ChatCompletion 流的示例。这是此列表中下一本 Livebook 的流式版本。
- Deeplearning.AI Orderbot。此笔记本是 Deeplearning.AI 课程 ChatGPT Prompt Engineering for Developers 第 8 课 中 python 笔记本的 elixir / Kino 翻译。
- 一个 Completions Chatbot,可以部署为 Livebook 应用。部署的应用显示了两个表单,一个用于正常完成,另一个用于流式完成。
- 一个 Image Generation UI
这些都托管在 hexdocs 上,可以作为您自己项目的灵感/起点。
开发
以下部分仅适用于希望为此存储库做出贡献的开发者。
此库是使用在 VS Code 开发容器内运行的 Livebook docker 镜像开发的。.devcontainer
文件夹包含所有相关文件。
要开始,请将存储库克隆到您的本地机器并在 VS Code 中打开它。按照提示在容器中打开它。
在容器在 VS Code 中启动并运行后,您可以在 http://localhost:8080 访问 livebook。不过,您需要输入存储在环境变量 LIVEBOOK_PASSWORD
中的密码。该变量需要在 .devcontainer/.env
文件中定义,详细说明如下。
环境变量和秘密
要为开发容器开发设置环境变量,您可以在 .devcontainer
文件夹中创建一个 .env
文件。任何秘密,如 OPENAI_API_KEY
和 LIVEBOOK_PASSWORD
,都可以在此文件中定义为环境变量。请注意,此 .env
文件不应包含在版本控制中,并且为了这个原因,它已包含在 .gitignore 文件中。
您可以在同一个文件夹中找到一个示例 env
文件,可以将其用作您自己 .env
文件的模板。这些变量将通过 docker-compose.yml
传递给 Livebook。