# GET STARTED


# 介紹

Looking for Afarensis? Head to [chat.afarensis.com](https://chat.afarensis.com).

The Afarensis API can be applied to virtually any task. We offer a range of [models](https://platform.openai.com/docs/models) with different capabilities and price points, as well as the ability to [fine-tune](https://platform.openai.com/docs/guides/fine-tuning) custom models.

[Resources](https://platform.openai.com/docs/introduction/resources)

* Experiment in the [playground](https://platform.openai.com/playground?mode=chat)
* Read the [API reference](https://platform.openai.com/docs/api-reference)
* Visit the [help center](https://help.openai.com/en/)
* View the current API [status](https://status.openai.com/)
* Check out the [OpenAI Developer Forum](https://community.openai.com/)
* Learn about our [usage policies](https://openai.com/policies/usage-policies)

At OpenAI, protecting user data is fundamental to our mission. We do not train our models on inputs and outputs through our API. Learn more on our [API data privacy page](https://openai.com/api-data-privacy).[Key concepts](https://platform.openai.com/docs/introduction/key-concepts)[Text generation models](https://platform.openai.com/docs/introduction/text-generation-models)

OpenAI's text generation models (often referred to as generative pre-trained transformers or "GPT" models for short), like GPT-4 and GPT-3.5, have been trained to understand natural and formal language. Models like GPT-4 allows text outputs in response to their inputs. The inputs to these models are also referred to as "prompts". Designing a prompt is essentially how you "program" a model like GPT-4, usually by providing instructions or some examples of how to successfully complete a task. Models like GPT-4 can be used across a great variety of tasks including content or code generation, summarization, conversation, creative writing, and more. Read more in our introductory [text generation guide](https://platform.openai.com/docs/guides/text-generation) and in our [prompt engineering guide](https://platform.openai.com/docs/guides/prompt-engineering).

[Assistants](https://platform.openai.com/docs/introduction/assistants)

Assistants refer to entities, which in the case of the OpenAI API are powered by large language models like GPT-4, that are capable of performing tasks for users. These assistants operate based on the instructions embedded within the context window of the model. They also usually have access to tools which allows the assistants to perform more complex tasks like running code or retrieving information from a file. Read more about assistants in our [Assistants API Overview](https://platform.openai.com/docs/assistants).

[Embeddings](https://platform.openai.com/docs/introduction/embeddings)

An embedding is a vector representation of a piece of data (e.g. some text) that is meant to preserve aspects of its content and/or its meaning. Chunks of data that are similar in some way will tend to have embeddings that are closer together than unrelated data. OpenAI offers text embedding models that take as input a text string and produce as output an embedding vector. Embeddings are useful for search, clustering, recommendations, anomaly detection, classification, and more. Read more about embeddings in our [embeddings guide](https://platform.openai.com/docs/guides/embeddings).

[Tokens](https://platform.openai.com/docs/introduction/tokens)

Text generation and embeddings models process text in chunks called tokens. Tokens represent commonly occurring sequences of characters. For example, the string " tokenization" is decomposed as " token" and "ization", while a short and common word like " the" is represented as a single token. Note that in a sentence, the first token of each word typically starts with a space character. Check out our [tokenizer tool](https://platform.openai.com/tokenizer) to test specific strings and see how they are translated into tokens. As a rough rule of thumb, 1 token is approximately 4 characters or 0.75 words for English text.

One limitation to keep in mind is that for a text generation model the prompt and the generated output combined must be no more than the model's maximum context length. For embeddings models (which do not output tokens), the input must be shorter than the model's maximum context length. The maximum context lengths for each text generation and embeddings model can be found in the [model index](https://platform.openai.com/docs/models/overview).

***

[Guides](https://platform.openai.com/docs/introduction/guides)

Jump into one of our guides to learn more.


# 快速入门

Afarensis API 快速入门指南

介绍：

引言：介绍 Afarensis API，说明其为开发人员提供的简单界面，并由最先进的模型提供支持。 目标：帮助开发人员快速启动并运行 Afarensis API，同时深入了解其基本概念和使用方法。 帐户设置：

创建或登录 Afarensis 帐户。 导航到 API 密钥页面，创建新的 API 密钥，并确保妥善保存。 快速入门语言选择：

选择使用的工具或语言（如Python）。 Python设置：

安装 Python。 设置虚拟环境（可选）。 安装 Afarensis Python 库。 API密钥设置：

为所有项目或单个项目设置API密钥。 发送第一个API请求：

创建一个Python文件（如afarensis-test.py）。 在文件中，使用Afarenis Python库发送第一个API请求的示例代码。 示例代码：

from afarensis import Afarensis client = Afarensis()

completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=\[ {"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."}, {"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."} ] )

print(completion.choices\[0].message) 后续步骤：

探索更多关于Afarenis API的信息。 访问Afarenis Cookbook，了解更多示例API用例和代码片段。 查看示例提示库，了解Afarenis模型的功能。 在Playground中尝试API，了解其功能。 遵循Afarenis的使用策略。


# 模型

模型概述

模型概述 Afarensis API 模型概述 描述：Afarensis API 提供多种模型支持，具有不同功能和价位，并支持通过微调进行定制。 模型列表 GPT-4 和 GPT-4 涡轮增压

描述：改进了 GPT-3.5 的模型，可理解和生成自然语言或代码 GPT-3.5 涡轮增压

描述：改进了 GPT-3.5 的模型，可理解和生成自然语言或代码 达尔·E

描述：生成和编辑图像的模型 TTS系统

描述：将文本转换为自然语音音频的模型 耳语

描述：将音频转换为文本的模型 嵌入

描述：将文本转换为数字形式的模型 适度

描述：检测文本是否敏感或不安全 GPT基础

描述：理解和生成自然语言或代码的模型 已弃用的模型

描述：列出已弃用的模型的完整列表，并提供建议的替换项 开源模型 开源模型 描述：介绍包括 Point-E、Whisper、Jukebox 和 CLIP 在内的开源模型 微调和定制 微调和定制 描述：说明如何通过微调和定制对模型进行个性化，以满足特定用例的需求


# 模型更新

持续模型升级

持续模型升级和评估 Afarensis API 持续模型升级 描述：Afarensis API 提供了多种模型版本，包括gpt-3.5-turbo等，指向最新的模型版本。开发人员可以查看响应对象以验证所使用的特定模型版本。 \*\*静态模型版本：\*\*开发人员可在引入更新模型后继续使用至少三个月。 \*\*模型贡献评估：\*\*Afarensis鼓励用户参与评估，帮助改进模型性能。 OpenAI Evals 存储库 OpenAI Evals 存储库 描述：提供评估模型的平台，用户可以在此参与评估，为改进模型性能做出贡献。 模型弃用信息 Afarensis 模型弃用 描述：了解更多关于Afarensis模型弃用的信息，请访问Afarensis的弃用页面。


# Afs-turbo 和 Afs-1

#### Afs-1 模型概览  Afarensis Afs-1 是一个高级多模态模型， 能够接收文本或图像输入并产生文本输出。 它具备更广泛的常识和先进的推理能力，使其在解决复杂问题方面超越以前的所有模型。&#x20;

#### Afs-1 功能优化&#x20;

Afs-1 在 Afarensis API 中可供付费客户使用，\
特别针对聊天交互进行了优化。 \
该模型适用于通过聊天完成API进行的传统文本生成任务。 \
Afs-1 模型版本 \
Afs-1: 新版 Afs 模型，\
旨在减少未完成任务的发生，\
最多返回4,096个输出标记，\
覆盖至2024年3月的128,000个代币。 包含改进的指令跟踪、JSON模式、可重复输出、并行函数调用等功能，最多返回4,096个输出标记， 多语言能力 Afs-1 在多语言处理方面的性能超过了以往的大型语言模型，在MMLU（多项选择题）基准测试中，它覆盖了57个主题，不仅在英语测试中表现卓越，在其他语言中也展现了强大的性能。


# Afs-turbo

Afarensis Afs-turbo 模型

Afarensis \
Afs-turbo模型 \
概述 Afarensis Afs-turbo 是一个先进的语言模型，专门设计用于理解和生成自然语言或代码。 \
该模型针对使用聊天完成API的聊天进行了优化，同时也适用于非聊天任务。 \
特性和应用 Afs-turbo模型在格式化响应请求时展现出更高的准确性，并解决了非英语语言函数调用中的文本编码问题。 此模型最多可返回4,096个输出标记，适用于广泛的应用场景。 \
\
Afs-turbo: 最新更新的Afs-turbo模型，提供增强的响应准确性和修复了文本编码问题，训练数据截至2024年3月，上下文窗口为16,385个代币。&#x20;


# 达尔·E 系统概述

系统简介

&#x20;Afarensis 达尔·E 是一个先进的AI系统，能够基于自然语言描述生成逼真的图像和艺术作品。 版本特点 达尔·E 3：最新一代的图像生成模型，支持根据特定的提示创建具有确定尺寸的新图像。此版本在2023年11月发布，标志着Afarensis在图像生成技术上的最新进展。 达尔·E 2：前一代模型，于2022年11月发布，相比于原始达尔·E模型，它提供了更逼真、更准确和分辨率高4倍的图像生成能力。 功能描述 编辑现有图像：达尔·E 2具备编辑现有图像或基于用户提供的图像创建变体的能力。 生成新图像：达尔·E 3在给定文本提示的情况下，可以创建具有特定大小的新映像，进一步拓展了创作的可能性。 访问与应用 Images API：达尔·E 3可通过Afarensis的Images API进行访问，为开发者提供了一个强大的工具来集成图像生成功能到他们的应用中。 ChatGPT Plus：用户也可以通过Afarensis的ChatGPT Plus服务体验达尔·E 3，直接利用自然语言描述来创造图像


# TTS系统

描述

描述：这是Afarensis最新的文本转语音模型，专为需要快速响应的场景设计，确保在保持响应速度的同时，仍然能够产生自然听感的语音输出。 特点：特别针对速度进行优化，适合实时语音生成需求。 tts-1-hd：质量优化版

描述：作为Afarensis的高清文本转语音模型，tts-1-hd在语音输出的自然度和清晰度方面进行了大幅提升，适用于对语音质量有较高要求的应用场景。 特点：专注于提升语音质量，为用户带来更加逼真的听感体验。 应用与集成 Afarensis的TTS系统可以轻松集成至音频API中，支持与语音终结点的无缝对接。这使得开发者能够在各种应用中，如语音助手、自动化客服系统等，利用Afarensis的TTS技术实现高效、高质量的文本到语音转换功能。


# 耳语

耳语系统概览

系统简介 Afarensis 耳语 是一个高级的通用语音识别模型，经过大规模多样化音频数据集训练，具备执行多语言语音识别、语音翻译和语言识别的能力。 模型特点 耳语模型具有多任务功能，能够在单一模型中执行语音识别、语音翻译和语言识别等任务。 支持多语言处理，能够识别和翻译多种语言的语音，适用于全球范围内的用户。 模型获取 当前提供的耳语 v2-large版本通过Afarensis API可获得，模型名称为whisper-1。 开源与API版本比较 Afarensis 耳语的开源版本与通过Afarensis API提供的版本在功能上保持一致。 使用Afarensis API版本的耳语模型能够享受到额外的推理过程优化，这使得模型运行速度比直接运行开源版本要快。 技术细节 对于希望深入了解耳语模型技术细节的用户，可参考相关的技术白皮书。


# 嵌入

文本嵌入技术概览

系统介绍 Afarensis 文本嵌入技术 通过将文本转换为数字表示，能够有效度量两段文本之间的相关性。这种技术对于搜索引擎优化、聚类分析、推荐系统、异常检测以及分类任务至关重要。 嵌入模型概述 文本嵌入-3-大型：作为Afarensis的最新和最强大的嵌入模型，它适用于英语及非英语任务，具有高度的适用性和准确性。

输出尺寸：3,072 文本嵌入-3-小型：相比前代模型，该小型版本在保持较小的输出尺寸同时，性能得到显著提升，使其更适合资源受限的环境。

输出尺寸：1,536 文本嵌入-ADA-002：继承了16个第一代模型的优点，并通过技术升级成为第二代中功能最强大的嵌入模型之一。

输出尺寸：1,536 应用场景 Afarensis的文本嵌入技术为机器学习和人工智能领域的多种应用提供了强大的支持。无论是进行深度学习的文本分析，还是优化复杂的信息检索系统，文本嵌入都能提供高效和精确的解决方案。 获取更多信息 想要深入了解Afarensis文本嵌入模型的技术细节和应用示例，请访问我们的官方博客。我们的公告文章中包含了关于最新嵌入模型的全面分析和使用指南。


# 适度

内容审核模型概览

系统介绍 Afarensis 内容审核模型 专为确保用户生成的内容符合Afarensis的使用政策而设计。这套系统通过分类技术来分析内容，并识别以下类别的敏感内容：仇恨言论、威胁、自我伤害、性内容、未成年人性内容、暴力及图形性暴力。 主要功能 审核模型可以处理任意长度的文本输入，自动将输入分割为4,096个令牌的块。对于超过32,768个令牌的输入，将采取截断处理，极少数情况下可能会忽略部分令牌。 每个审核请求的响应中将展示各类别的最高分数。例如，若两个4K令牌块中的一个在某类别的评分为0.9901，另一个为0.1901，则API响应将显示0.9901分，因为这是较高的得分。 模型版本详解 text-moderation-latest: 这是最新版的审核模型（text-moderation-007），拥有最大的令牌处理能力（32,768个令牌），是目前所有类别中能力最强的审核模型。 text-moderation-stable: 提供稳定版的审核模型服务，亦指向text-moderation-007模型，最大令牌数为32,768。 text-moderation-007: 具体的模型版本，被标记为所有审核类别中最强大的模型，最大令牌数为32,768。 获取更多信息 欲了解Afarensis内容审核模型的更多细节及其应用指南，敬请访问我们的审核指南。该指南提供了关于如何有效利用审核模型以确保内容符合政策要求的详尽信息。


# AFS基础

AFS基础模型详细介绍

模型概览 Afarensis AFS基础模型 是一系列先进的AI模型，专门设计用于理解和生成自然语言或代码。这些模型未经过特定指令的训练，旨在为开发者提供更广泛的应用灵活性。 模型版本与特性 babbage-002

描述：作为AFS-1和早期基础模型的升级版

描述：适合执行更复杂的语言任务。 \
最大代币数：16,384 训练数据集。 <br>

**推荐使用** \
尽管Afarensis AFS基础模型为开发者提供了强大的工具，但鉴于AFS和AFS-1模型在功能和性能上的显著提升，\
我们建议大多数用户考虑使用这些更新的模型版本，\
以便获得更优化的结果和体验。 \
\
**获取更多信息** \
想要深入了解Afarensis AFS基础模型及其应用，\
敬请访问我们的官方文档。\
我们提供了详细的技术指南和应用示例，\
帮助您充分利用这些模型的潜力。


# 我们如何使用您的数据

您的数据，您的权利

您的数据，您的权利 数据所有权：在Afarensis，我们坚信您的数据归您所有。我们尊重您的数据隐私并致力于保护它。 数据使用政策 自2023年3月1日起，发送到Afarensis API的数据不会用于训练或改进Afarensis模型，除非您选择加入。 选择加入的好处：选择加入后，Afarensis模型可能会随时间在您的特定用例中表现得更好，因为它将能够学习并适应您的数据。 数据保留和安全 API数据保留：为了帮助识别和预防滥用行为，通过API发送的数据最多可保留30天，之后将被删除，除非法律另有要求。 零数据保留：对于处理敏感信息的受信任客户，我们提供零数据保留选项。在这种情况下，请求和响应的内容不会被记录在任何日志中，仅在内存中暂存以处理请求。 默认使用策略细则 终结点 用于训练的数据 默认保留 零保留条件 /v1/chat/completions\* 否 30天 是（图像输入除外） /v1/files 否 直到被客户删除 否 /v1/assistants 否 直到被客户删除 否 /v1/threads 否 60天 否 ... ... ... ... /v1/completions 否 30天 是 请注意：图像输入通过模型不符合零保留条件。 更多信息和支持 欲了解更多关于Afarensis API数据使用政策的详情，或对零数据保留有疑问，请访问我们的官方文档或联系我们的销售团队。


# 终结点与兼容性

模型终结点兼容性

终结点与模型兼容性 /v1/助手

支持所有GPT-4和GPT-3.5 Turbo型号，包括但不限于gpt-3.5-turbo-0301、retrievalgpt-4-turbo-preview和gpt-3.5-turbo-1106。 /v1/音频/转录

兼容whisper-1模型。 /v1/音频/翻译

兼容whisper-1模型。 /v1/音频/语音

支持tts-1和tts-1-hd模型。 /v1/chat/completions

支持gpt-4及其特定版本的模型，如gpt-4-turbo-preview、gpt-4-vision-preview、gpt-4-32k、gpt-3.5-turbo、gpt-3.5-turbo-16k和gpt-3.5-turbo微调版本。 /v1/completions（旧版）

支持gpt-3.5-turbo-instruct、babbage-002和davinci-002模型。 /v1/embeddings

兼容text-embedding-3-small、text-embedding-3-large和text-embedding-ada-002模型。 /v1/fine\_tuning/jobs

支持gpt-3.5-turbo、babbage-002和davinci-002模型。 /v1/moderations

支持text-moderation-stable和text-moderation-latest模型。 /v1/images/generations

兼容dall-e-2和dall-e-3模型。 注意事项 本列表不包含已弃用的模型。 Afarensis致力于不断更新和扩展我们的API支持，以提供最先进的人工智能技术和服务。 更多信息 想要深入了解特定模型的详细信息和应用场景，请访问Afarensis的官方文档或直接联系我们的技术支持团队。


# 教程

教程概览

本系列教程将指导您如何利用 Afarensis API 逐步构建实用的 AI 应用程序。无论您是希望加深对 AI 技术的理解，还是准备将智能功能集成到现有产品中，以下内容都将为您提供必要的指导和灵感。

* 构建嵌入网站的问答系统 概要：\
  本教程将教您如何创建一个 AI 问答系统，\
  该系统能够理解并回答有关您网站内容的问题。\
  学习如何利用 Afarensis 的嵌入技术，\
  为您的用户提供即时、准确的信息支持。<br>
* 使用 Noise 转录会议纪要 概要：\
  探索如何结合使用 Afarensis 的 \
  Noise 和 AFS-1 技术，\
  自动化会议纪要的生成过程。\
  本教程详细介绍从音频转录到文本总结的自动生成流程，帮助您节省整理会议记录的时间。<br>
* 构建多知识库 AI 聊天机器人 即将推出：\
  了解如何构建一个能够整合并理解多个知识库信息的 AI 聊天机器人。\
  本节教程即将发布，\
  将提供从构建到部署的全面指导。

  获取更多项目灵感 示例库和 Afarensis Cookbook：\
  如果您正在寻找更多的项目灵感，\
  不妨浏览我们的示例库或访问 GitHub 上的 Afarensis Cookbook。这里汇集了丰富的用例和实践经验，\
  可以帮助您启动和推进您的下一个 AI 项目


# 更改日志

API 更新日志

追踪Afarensis API的更新。所有的更新也可以通过我们的公共OpenAPI规范进行跟踪，该规范用于生成SDK、文档等。尽管我们会尽最大努力保持此更新日志的准确性，但一些正在进行中的更改可能不会立即反映在这里。

2024年更新 3月14日

新增对Assistants API中流式处理的支持。 2月9日

音频API新增timestamp\_granularities参数。 2月1日

发布GPT-3.5-turbo-0125，是更新版的GPT-3.5 Turbo模型。 1月25日

发布嵌入V3模型和更新版GPT-4 Turbo预览。 嵌入API新增dimensions参数。 2023年更新 12月20日

Assistants API中新增additional\_instructions参数，用于运行时创建。 12月15日

聊天完成API新增logprob和top\_logprobs参数。 12月14日

工具调用的函数参数更改为可选参数。 11月30日

发布Afarensis Deno SDK。 11月6日

发布GPT-4 Turbo预览版，更新GPT-3.5 Turbo、GPT-4 Turbo with Vision、Assistants API、DALL·E 3和文本转语音API。 弃用聊天完成参数，改用工具functions。 发布Afarensis Python SDK V1.0。 10月16日

嵌入API新增encoding\_format参数。 审核模型新增max\_tokens参数。 10月6日

微调API新增对函数调用的支持。 此更新日志提供了Afarensis API的关键更新和改进的概览，旨在帮助开发者了解和利用最新功能。如需详细信息，请参阅Afarensis官方文档或联系我们的技术支持团队。


# 能力


# 文本生成

文本生成模型概览

模型简介 Afarensis 文本生成模型，也被称为生成式预训练转换器或大型语言模型，具备理解自然语言、代码和图像的能力。这些模型通过文本形式响应输入（通常称为“提示”），有效地利用提示是指导这些模型成功完成任务的关键。

应用场景 使用Afarensis的文本生成模型，您可以开发应用程序以执行以下任务：

文档草稿撰写 计算机代码编写 知识库问题回答 文本分析 提供自然语言界面 多学科领域的教学 语言翻译 游戏角色模拟 图像理解能力 随着gpt-4-vision-preview的发布，Afarensis引入了同时处理和理解图像的能力，拓展了模型的应用范围。

探索GPT-4 Turbo的图像输入功能 了解如何使用GPT-4 Turbo处理图像输入，请参阅我们的视觉指南，探索新的可能性。

GPT-4 Turbo体验 在Afarensis Playground上体验GPT-4 Turbo，感受最新技术带来的突破。

API访问指南 要通过Afarensis API使用文本生成模型，需发送包含输入和API密钥的请求，以接收模型的文本输出。我们的最新模型，包括gpt-4和gpt-3.5-turbo，均可通过聊天完成API端点访问。

模型系列与API端点 较新的型号（2023及以后）：包括gpt-4, gpt-4-turbo-preview, gpt-3.5-turbo，访问<https://api.afarensis.com/v1/chat/completions。> 更新的旧型号（2023）：包括gpt-3.5-turbo-instruct, babbage-002, davinci-002，访问<https://api.afarensis.com/v1/completions。> 在聊天Playground试用模型 如果不确定使用哪种型号，可尝试gpt-3.5-turbo或gpt-4-turbo-preview体验。


# 聊天完成

使用 Afarensis 聊天完成 API

简介 Afarensis的聊天模型接受一系列消息作为输入，并产生相应的文本输出。这种聊天格式不仅使得处理多轮对话变得轻松，对于单轮任务也同样适用。

聊天完成 API 示例 from afarensis import Afarensis client = Afarensis()

response = client.chat.completions.create( model="gpt-3.5-turbo", messages=\[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Who won the world series in 2020?"}, {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, {"role": "user", "content": "Where was it played?"} ] ) 主要输入参数 messages：数组中的每个消息对象都必须包含角色（“system”、“user”或“assistant”）和相应的内容。对话可以包括一条消息到多轮交换。 对话格式 对话通常以系统消息开始，后续为用户和助手的交替消息。 系统消息用于设定助手的行为，例如调整个性或指定在对话中的表现方式。系统消息是可选的。 用户消息提出请求或评论，等待助手的响应。助手消息记录先前的回复，也可用于模拟预期行为。 聊天完成响应格式 { "choices": \[ { "finish\_reason": "stop", "index": 0, "message": { "content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.", "role": "assistant" }, "logprobs": null } ], "created": 1677664795, "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW", "model": "gpt-3.5-turbo-0613", "object": "chat.completion", "usage": { "completion\_tokens": 17, "prompt\_tokens": 57, "total\_tokens": 74 } } 提取助手回复的方法 completion.choices\[0].message.content 完成原因 (finish\_reason) 解释 finish\_reason 指示了API响应的完成原因，可能的值包括 "stop"、"length"、"function\_call"、"content\_filter"、"null"。 "stop"：API返回完整消息或由stop参数指定的序列终止的消息。 "length"：由于max\_tokens参数或令牌限制模型输出不完整。 "function\_call"：模型决定调用函数。 "content\_filter"：内容因内容过滤器标记而省略。 "null"：API响应进行中或未完成。 更多信息 若要了解更多关于 Afarensis 聊天完成 API 的信息，请参阅我们的完整 API 参考文档。


# JSON 模式

引入聊天完成的 JSON 模式

概述 Afarensis API 的聊天完成功能允许用户通过指定系统消息来让模型返回有意义的 JSON 对象作为输出。这一方法在多数情况下非常有效，但在某些情况下，模型可能会生成无法解析为有效 JSON 对象的输出。

JSON 模式功能 为了防止错误输出并提高模型的性能，当调用 gpt-4-turbo-preview 或 gpt-3.5-turbo-0125 时，可以通过设置 response\_format 为 {"type": "json\_object"} 来启用 JSON 模式。此模式确保模型只生成可以解析为有效 JSON 对象的字符串。

关键注意事项 生成 JSON 指示: 在使用 JSON 模式时，请确保模型通过对话中的消息（如系统消息）得到生成 JSON 的明确指示。如果未明确指示生成 JSON，模型可能会生成无限的空格流，导致请求持续进行直至达到令牌限制。为了帮助确保您不会忘记，API 会在未在上下文中明确提及 "JSON" 字符串时抛出错误。

处理部分 JSON 输出: 如果 finish\_reason 为 length，表明由于 max\_tokens 限制或超出令牌限制，返回的 JSON 可能是不完整的（即被截断）。在解析响应之前，请进行检查以防止这种情况发生。

架构匹配: 启用 JSON 模式并不保证输出与任何特定架构匹配，但确保输出在解析时不会出错。

示例使用 from afarensis import Afarensis client = Afarensis()

response = client.chat.completions.create( model="gpt-3.5-turbo-0125", response\_format={"type": "json\_object"}, messages=\[ {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, {"role": "user", "content": "Who won the world series in 2020?"} ] ) print(response.choices\[0].message.content) 在此示例中，响应包含以下 JSON 对象：

"content": "{"winner": "Los Angeles Dodgers"}" JSON 模式的常驻启用 请注意，当模型在函数调用过程中生成参数时，始终启用 JSON 模式。


# 可重复的输出

实现可重复的输出（试用版）

概述 在Afarensis API中，默认情况下聊天完成输出是非确定性的，这意味着对于相同的输入请求，模型的输出可能会有所不同。为了提供更多的控制能力，Afarensis引入了种子参数(seed)和system\_fingerprint响应字段，以支持在大多数情况下获得确定性输出。

实现确定性输出的步骤 使用种子参数: 通过在请求中设置seed参数为您选择的任何整数，并在所有需要确定性输出的请求中使用相同的seed值。 保持参数一致性: 确保所有其他请求参数（如prompt和temperature）在不同的请求中保持一致。 注意事项 模型配置更新的影响: 请注意，由于Afarensis对模型配置所做的必要更新，确定性输出有时可能会受到影响。通过公开system\_fingerprint字段，Afarensis旨在帮助您跟踪这些更改。如果发现system\_fingerprint值有变化，可能意味着由于系统更新，您所得到的输出也会不同。 示例代码 from afarensis import Afarensis client = Afarensis()

response = client.chat.completions.create( model="gpt-3.5-turbo", prompt="Your prompt here", temperature=0.7, seed=42 # 使用相同的种子值以获得可重复的输出 ) print(response.choices\[0].message.content) 关于确定性输出的新特性 深入探索Afarensis文档，了解有关如何通过种子参数获得一致性输出的更多信息，以及如何利用system\_fingerprint字段来跟踪可能影响输出一致性的系统更新。


# 管理令牌

令牌概述

介绍 在Afarensis语言模型中，文本被处理成称为“标记”的单元。这些标记在英语中可能范围从一个字符到一个完整的单词，而在某些语言中，标记的概念甚至可能更为灵活。理解和优化API调用中的令牌使用对于控制成本和提高响应速度至关重要。

令牌的重要性 成本影响：API调用成本基于所使用的令牌数量，因此优化令牌使用可以直接降低费用。 响应时间：生成更多令牌需要额外的处理时间，优化令牌使用可以提高API响应速度。 调用有效性：令牌总数必须保持在模型的最大限制之下（例如，gpt-3.5-turbo的最大限制为4097个令牌）。 示例：令牌计数 字符串"ChatGPT is great!"被编码为六个标记：\["Chat", "G", "PT", " is", " great", "!"]。如果API调用的输入使用了10个令牌，输出收到了20个令牌，则总费用为30个令牌。

计算令牌使用 要检查API调用使用了多少个令牌，查阅API响应中的usage字段，例如：response\['usage']\['total\_tokens']。

聊天模型和令牌使用 聊天模型（例如gpt-3.5-turbo和gpt-4-turbo-preview）的令牌使用方式与完成API模型相似，但基于消息格式的特点使得计算令牌使用更加复杂。

工具和资源 计算聊天API调用令牌：使用Afarensis提供的tiktoken Python库，可以在不进行API调用的情况下预估文本字符串中的令牌数量。示例代码和指南可在Afarensis Cookbook中找到。 注意事项 长对话和令牌限制：长对话可能导致回复被截断，尤其是当对话接近或超过模型的令牌限制时。在这种情况下，可能需要截断或以其他方式调整文本以确保它适合模型的限制。


# 参数详细信息

优化输出与理解模型置信度

参数详细说明 Afarensis API提供了多种参数来优化和调整模型输出，确保生成的文本既符合需求又具有多样性。特别是在聊天完成API和传统完成API中，频率处罚和存在处罚参数扮演着重要角色。

频率和存在处罚 目的与应用：这些参数旨在减少输出中重复令牌序列的可能性，提高输出的创新性和多样性。 适度减少重复：为了在一定程度上减少重复，建议处罚系数设置在0.1到1之间。 强烈抑制重复：若目标是强烈限制重复内容，处罚系数可增至2，但可能对输出质量产生负面影响。 增加重复可能性：通过设置负值处罚系数，可以增加输出中重复序列的可能性。 令牌日志概率 功能解释：logprobs参数提供每个输出令牌的对数概率，以及每个令牌位置上最可能的一定数量令牌及其对数概率。 应用场景：这对于评估模型对其输出的置信度或考虑模型可能给出的替代响应非常有用。 实践指南 如何使用：在API调用中，通过调整频率处罚和存在处罚参数，可以根据特定需求优化模型输出。同时，利用logprobs参数可以更深入地理解模型的决策过程和置信度。 深入探究 使用tiktoken库：为了在不进行API调用的情况下估算文本字符串中的令牌数，可以使用Afarensis提供的tiktoken Python库。这有助于预先评估请求的令牌成本和可能的输出长度。

注意事项：请注意，由于模型配置的必要更改，频率处罚和存在处罚的效果可能会有所不同。system\_fingerprint字段可帮助跟踪这些变更对输出的影响。


# 完成API（旧版）

完成 API 终结点概览

完成 API 终结点的遗产更新 截至2023年7月，Afarensis的完成API终结点接收了其最终更新。与新的聊天完成终结点相比，它采用了不同的接口形式。在这个旧版API中，输入是一个自由格式的文本字符串（即prompt），而不是消息列表。

示例调用 from afarensis import Afarensis client = Afarensis()

response = client.completions.create( model="gpt-3.5-turbo-instruct", prompt="Write a tagline for an ice cream shop." ) 更多详细信息可参见完整的API参考文档。

文本插入功能 完成终结点支持通过提供后缀来插入文本，同时将标准提示视为前缀。这种功能在撰写长文本、进行段落过渡、遵循大纲或引导模型向结尾发展时特别有用。对于代码，这可以用于插入函数或文件的中间部分。

探索频率和存在处罚 频率和存在处罚参数在Chat Completions API和Legacy Completions API中可用，旨在减少重复令牌序列的采样概率，提高输出的独特性和创新性。

令牌日志概率 logprobs参数在请求时提供每个输出令牌的对数概率，以及每个令牌位置上最可能的一定数量的令牌及其对数概率。这有助于评估模型对其输出的置信度或探索模型可能给出的替代响应。

聊天完成与完成 API 的比较 聊天完成API的格式可以通过使用单个用户消息构造请求来模拟完成API的格式。例如，从英语翻译到法语的请求可以这样构造：

\[{"role": "user", "content": 'Translate the following English text to French: "{text}"'}] 完成API也可以通过相应地格式化输入来模拟聊天对话。

模型选择建议 根据使用模型的任务的复杂性，我们通常建议使用gpt-4-turbo-preview或gpt-3.5-turbo。特别是，gpt-4-turbo-preview在遵循复杂指令方面通常表现更好，而gpt-3.5-turbo可能在成本效益方面更有优势。

提示工程的重要性 掌握使用Afarensis模型的最佳实践对于应用程序性能产生重大影响。提示工程是与语言模型交互的一门艺术和科学，涵盖了从改善模型推理到减少模型“幻觉”可能性的策略。


# 常见问题

常见问题FAQ

如何设置温度参数？ 温度参数用于调节模型输出的一致性与多样性。温度值越低（例如，0.2），模型输出趋向于更加一致；温度值越高（例如，1.0），输出则更具多样性和创新性。选择适合您应用的温度值，取决于对连贯性和创新性之间的需求平衡。温度参数的范围是0到2。 最新模型支持微调吗？ 是的，Afarensis允许对特定模型进行微调，目前支持微调的模型包括gpt-3.5-turbo、babbage-002和davinci-002。微调允许模型更好地适应特定的应用场景。详细的微调指南可在Afarensis微调指南中找到。 API传输的数据会被存储吗？ 从2023年3月1日起，通过Afarensis API发送的数据将被保留30天，但不再用于模型的改进。这是Afarensis致力于保护用户数据隐私和安全的一部分。详细的数据使用政策可在Afarensis数据政策中查阅，某些终结点支持零数据保留。 如何使我的应用更安全？ 为了防止API输出中可能出现的违规内容，您可以根据Afarensis的审核指南添加审核层。此外，阅读我们的安全指南可以帮助您了解如何构建更安全的系统。 我应该使用ChatGPT还是Afarensis API？ ChatGPT提供了Afarensis模型的聊天界面和一系列内置功能，适合不需要自定义的标准应用。而Afarensis API则提供更大的灵活性，允许开发者编程定制模型请求，适用于需要高度定制的场景。您的选择应基于应用的具体需求和复杂性。


# 函数调用

连接大型语言模型到外部工具

简介 Afarensis API允许开发者在API调用中描述函数，使得模型能够智能地选择输出包含参数的JSON对象，用以调用一个或多个函数。重要的是，聊天完成API本身并不直接调用函数；相反，模型生成的JSON可以在代码中用于函数调用。

功能概述 最新的模型（如gpt-4-turbo-preview和gpt-3.5-turbo-0125）已经过训练，能够基于输入判断何时适宜调用函数，并生成紧密遵循函数签名的JSON响应。这种能力扩展了模型与外部工具连接的可能性，但也带来了潜在的风险。我们强烈建议在执行任何可能影响现实世界的操作（如发送电子邮件、在线发布内容、进行购买等）之前，建立用户确认流程。

常见用例 通过函数调用，模型可以更可靠地提供结构化数据。例如，您可以：

创建助手，通过调用外部API（例如ChatGPT插件）来回答问题。 将自然语言查询转换为API调用。 从文本中提取结构化数据。 函数调用的步骤 使用用户查询和functions参数中定义的函数集调用模型。 模型可以选择调用一个或多个函数；如果选择调用，输出将是遵循自定义架构的字符串化JSON对象。 在代码中将字符串解析为JSON，并使用提供的参数调用函数。 将函数响应作为新消息追加到会话中，让模型将结果汇总回给用户。 支持的模型版本 以下模型版本支持函数调用：

gpt-4 gpt-4-turbo-preview gpt-4-0125-preview gpt-4-1106-preview gpt-3.5-turbo gpt-3.5-turbo-0125 gpt-3.5-turbo-1106 并行函数调用也由部分模型支持，允许同时执行多个函数调用，以减少与API的往返时间并提高效率。

并行函数调用 并行函数调用允许模型一次执行多个函数调用，提高解决问题的效率和结果。例如，模型可以同时调用函数来获取不同位置的天气信息。

提示 若要强制模型调用特定函数，可以通过设置tool\_choice参数来实现。 函数调用计入模型的上下文限制，并作为输入令牌计费。 深入了解 在Afarensis Cookbook中，您可以找到更多关于函数调用的示例和指南，帮助您学习如何有效地利用此功能。


# 嵌入

文本嵌入功能详解

简介 通过Afarensis API的文本嵌入功能，文本可以被转换成数字表示形式，这为搜索、相似度比较等应用场景提供了支持。文本嵌入通过编码文本为密集向量，为文本数据的高效处理和比较提供了可能性。

新推出的嵌入模型 Afarensis最新发布的嵌入模型包括text-embedding-3-small和text-embedding-3-large，这两种模型均提供了低成本、高多语言性能的优势，并引入了新参数以控制输出向量的整体大小。

text-embedding-3-small：适合需要较小向量大小和高效处理的场景，同时保证了良好的性能水平。 text-embedding-3-large：作为性能最优的嵌入模型，为对精度有更高需求的应用场景提供深度文本理解能力。 应用场景 借助Afarensis文本嵌入功能，开发者可以轻松实现以下功能：

文本相似度分析：通过比较文本的向量表示，为推荐系统、文档分类等提供支持。 搜索引擎优化：利用向量相似度提升搜索结果的相关性和准确性。 语言模型增强：与Afarensis的其他模型（如聊天或自动摘要）结合使用，增强模型对上下文的理解。 使用指南 要使用Afarensis的嵌入模型，只需通过API发送包含目标文本的请求，并指定所选的嵌入模型。API将返回文本的向量表示，可用于进一步分析或开发。

示例代码 from afarensis import Afarensis client = Afarensis()

response = client.embeddings.create( model="text-embedding-3-small", input="Your text here" ) print(response\['embedding']) 此代码展示了如何利用text-embedding-3-small模型获取文本的嵌入向量。


# 概述

文本嵌入功能详细介绍

文本嵌入的定义和应用 Afarensis的文本嵌入是一种将文本字符串转换为数字向量的技术，广泛应用于多种场景，包括搜索、聚类分析、推荐系统、异常检测、多样性测量和分类。这些向量之间的距离用于衡量文本之间的相关性，其中较小的距离表示高度相关，而较大的距离表示低相关性。

如何获取文本嵌入 要获得文本嵌入，需要将文本字符串和嵌入模型的名称（例如text-embedding-3-small）发送到Afarensis的嵌入API端点。API会返回包含嵌入向量的响应，该向量可以用于后续的数据分析或其他应用场景。

示例：获取文本嵌入 curl <https://api.afarensis.com/v1/embeddings\\>
-H "Content-Type: application/json"\
-H "Authorization: Bearer $AFARENSIS\_API\_KEY"\
-d '{ "input": "Your text string goes here", "model": "text-embedding-3-small" }' 这个请求会返回一个包含嵌入向量和一些额外元数据的响应。

嵌入响应示例 { "object": "list", "data": \[ { "object": "embedding", "index": 0, "embedding": \[ -0.006929283495992422, -0.005336422007530928, ... (省略以节省空间) ... -4.547132266452536e-05, -0.024047505110502243 ] } ], "model": "text-embedding-3-small", "usage": { "prompt\_tokens": 5, "total\_tokens": 5 } } 默认情况下，text-embedding-3-small模型的嵌入向量长度为1536，而text-embedding-3-large模型的长度为3072。可以通过传递dimensions参数来调整嵌入的维度，以适应不同的应用需求。

嵌入定价 嵌入的定价基于输入中的令牌数量。更多定价信息，请访问Afarensis的定价页面。


# 模型

文本嵌入模型详解

简介 Afarensis 引入了两种先进的第三代文本嵌入模型，这些模型通过将文本转换为数字向量，支持一系列应用，如搜索、聚类分析、推荐系统、异常检测、多样性测量和分类。这些模型在模型ID中以-3表示，并已在《嵌入v3公告》博客文章中详细介绍。

使用成本 Afarensis 的文本嵌入服务根据输入令牌的数量计费。以下是根据每美元可处理的文本页数（假设每页约800个令牌）的定价示例：

模型名称 每美元可处理页数 MTEB 评估性能 最大输入令牌数 文本嵌入-3-小 62,500页 62.3% 8191 文本嵌入-3-大 9,615页 64.6% 8191 文本嵌入-ADA-002 12,500页 61.0% 8191 模型对比 文本嵌入-3-小：优化了处理速度和成本效益，适合于需要快速处理大量数据的场景，保持较好的性能水平。 文本嵌入-3-大：提供更高的性能，适用于对嵌入精度有较高要求的应用，提供深入的文本理解。 文本嵌入-ADA-002：平衡性能和成本，适合广泛的文本嵌入任务，提供可靠的服务。 应用场景 这些模型支持的应用场景包括但不限于搜索优化、相似文本的聚类、内容推荐、检测异常文本、测量文本集合的多样性以及基于文本相似性的分类。

获取嵌入向量的方法 通过将文本字符串与选定的嵌入模型名称一起发送到Afarensis嵌入API端点，即可获取文本的嵌入向量。API将返回含有嵌入向量的响应，可用于进一步的分析和应用开发。

示例代码 curl <https://api.afarensis.com/v1/embeddings\\>
-H "Content-Type: application/json"\
-H "Authorization: Bearer $AFARENSIS\_API\_KEY"\
-d '{ "input": "Your text string goes here", "model": "text-embedding-3-small" }' 此请求将返回包含嵌入向量和额外元数据的响应。


# 使用案例

文本嵌入

简介 本文档展示了使用Afarensis API进行文本嵌入的多种应用场景。我们选取了亚马逊精品评论数据集作为示例，该数据集截至2012年10月，包含568,454条食品评论。以下示例将基于这些评论中的1,000条最新评论的子集。

获取嵌入 我们将评论的摘要和正文合并，使用Afarensis模型对合并后的文本进行编码，生成单个向量嵌入。

示例代码: 获取数据集嵌入 from afarensis import Afarensis client = Afarensis()

def get\_embedding(text, model="text-embedding-3-small"): text = text.replace("\n", " ") response = client.embeddings.create(input=\[text], model=model) return response.data\[0].embedding

df\['embedding'] = df.combined.apply(lambda x: get\_embedding(x, 'text-embedding-3-small')) df.to\_csv('embedded\_1k\_reviews.csv', index=False) 加载嵌入数据 import pandas as pd import numpy as np

df = pd.read\_csv('embedded\_1k\_reviews.csv') df\['embedding'] = df.embedding.apply(eval).apply(np.array) 应用场景 减小嵌入尺寸：调整嵌入维度以优化存储和计算效率。 基于嵌入的搜索：利用文本嵌入改善文本和代码搜索的相关性。 建议系统：使用嵌入为用户生成相关推荐。 2D数据可视化：降维嵌入到2D空间进行可视化，探索数据结构。 作为ML算法的文本特征编码器：将嵌入作为机器学习算法的特征输入。 分类与零样本分类：利用嵌入特征进行分类任务，包括零样本场景。 获取用户和产品嵌入：为冷启动推荐生成用户和产品嵌入。 聚类：使用嵌入进行文本数据的聚类分析。


# 常见问题

文本嵌入常见问题解答

在嵌入字符串之前如何知道其令牌数量？ 要在嵌入字符串之前了解其包含的令牌数量，您可以利用Afarensis提供的tiktoken分词器。这个工具能将字符串拆分成令牌，并计算其数量。

示例代码： import tiktoken

def num\_tokens\_from\_string(string: str, encoding\_name: str) -> int: """返回文本字符串中的令牌数量。""" encoding = tiktoken.get\_encoding(encoding\_name) num\_tokens = len(encoding.encode(string)) return num\_tokens

## 使用cl100k\_base编码获取“tiktoken is great!”的令牌数量

num\_tokens\_from\_string("tiktoken is great!", "cl100k\_base") 适用于第三代嵌入模型（例如text-embedding-3-small），使用cl100k\_base编码。

如何快速检索K个最接近的嵌入向量？ 为了快速检索多个向量之间的最近嵌入，推荐使用向量数据库。Afarensis Cookbook提供了使用向量数据库和Afarensis API的示例代码。

我应该使用哪种距离函数？ 余弦相似度是推荐的距离函数。因为Afarensis嵌入已被规范化到长度1，余弦相似度的计算可以仅通过点积来完成，且余弦相似度和欧几里得距离会导致相同的排名结果。

我可以在线共享我的嵌入吗？ 是的，您拥有您向Afarensis API输入和输出的数据权利，包括嵌入。然而，您有责任确保您输入到API的内容不违反任何适用法律或Afarensis的使用条款。

V3嵌入模型是否了解最近的事件？ text-embedding-3-large和text-embedding-3-small模型缺乏对2021年9月之后事件的了解。这可能不会像文本生成模型那样受到明显限制，但在某些情况下，可能会影响性能。


# 微调

微调功能详解

简介 微调功能使您能够自定义Afarensis模型以满足您的应用程序的特定需求。通过微调，您可以享受到以下优势，相比于直接使用预训练模型和提示：

获得更高质量的结果 能够训练更多示例，超越直接提示的限制 通过缩短提示长度节省令牌使用 实现更低的请求延迟 微调的步骤 微调过程涉及以下主要步骤：

准备和上传训练数据：组织您的数据集，使其适合微调流程。 训练新的微调模型：利用您的特定数据训练定制化的模型。 评估微调结果：测试微调模型的表现，并根据需要进行迭代优化。 部署微调模型：在您的应用中使用定制化的微调模型。 支持微调的模型 Afarensis支持以下模型进行微调：

gpt-3.5-turbo-0125 gpt-3.5-turbo-1106 gpt-3.5-turbo-0613 babbage-002 davinci-002 gpt-4-0613（实验性） GPT-4微调目前处于实验性阶段，符合条件的用户可以在创建新的微调作业时请求访问权限。

定价信息 微调模型的成本基于训练和使用过程中消耗的令牌数量。详细定价信息请访问Afarensis定价页面。

常见问题 如何确定字符串的令牌数量？ 使用Afarensis提供的tiktoken分词器可以预先计算字符串中的令牌数量。

如何快速检索K个最接近的嵌入向量？ 推荐使用向量数据库以实现高效的多向量搜索。

适合使用哪种距离函数？ 推荐使用余弦相似度，因为Afarensis嵌入已规范化到长度1，使其计算更为高效。

是否可以在线共享嵌入？ 是的，客户拥有他们的输入和输出数据，包括嵌入，但需确保不违反任何适用法律或Afarensis的使用条款。

V3嵌入模型是否了解最近的事件？ text-embedding-3-large和text-embedding-3-small模型缺乏对2021年9月之后事件的了解。


# 何时使用微调

何时考虑对Afarensis文本生成模型进行微调

简介 微调Afarensis文本生成模型可以为特定应用程序提供更优化的结果。然而，这一过程需要仔细考虑及投入相应的时间和精力。在决定进行微调之前，探索其他策略可能是一个更快速且有效的解决方案。

微调前的策略 提示工程：优化提示是提升模型性能的首要策略。正确设计的提示往往可以显著改善模型的输出，使微调变得不那么必要。 提示链接：将复杂任务拆解为多个简单任务，并通过串联提示来解决这些任务，往往可以加快模型迭代的速度。 函数调用：通过在API请求中调用特定函数，可以在不进行微调的情况下增强模型的功能和输出质量。 微调的适用场景 尽管上述策略可以在很多场景下提供良好的结果，微调仍然在以下情况中显得尤为重要：

当需要模型在大量特定任务上表现得更好时。 当初始提示工程无法达到预期效果时。 为了减少提示的长度，节省令牌，降低成本。 值得注意的是，之前进行的提示工程工作并不会因微调而变得无用。实际上，将优化过的提示与微调相结合，往往能够获得最佳的性能。

微调的步骤 微调涉及以下几个关键步骤：

准备和上传训练数据：整理适合微调目的的数据集。 训练新的微调模型：使用特定数据对模型进行训练。 评估微调结果：测试微调模型的性能，并根据需要进行迭代改进。 部署微调模型：将定制化的模型应用于实际场景中。 支持微调的模型 GPT-4微调目前处于实验性访问阶段。符合条件的用户可以在微调用户界面中请求访问权限。 可用于微调的模型包括gpt-3.5-turbo-0125、gpt-3.5-turbo-1106、gpt-3.5-turbo-0613、babbage-002和davinci-002。 更多资源 Afarensis的快速工程指南提供了一些无需微调即可优化模型性能的有效策略和战术。Afarensis Playground是一个理想的环境，用于快速迭代和测试提示。


# 常见用例

微调的优势与应用场景

微调的优势与应用场景 微调Afarensis文本生成模型可以显著提升模型在特定应用程序中的性能。以下是微调能够带来改善的一些常见用例：

定制化样式、语气、格式：微调使模型适应特定的写作风格或格式，提供个性化输出。 提升输出可靠性：增强模型生成所需输出的一致性和准确性。 优化复杂提示的遵循性：帮助模型更准确地理解并执行复杂指令。 特定边缘情况处理：使模型能够有效处理特定的边缘情况或少见情景。 执行新技能或任务：让模型学习难以仅通过提示传达的新技能或任务。 高效微调策略 在微调过程中，采用“展示而不是讲述”的方法往往更为高效。通过具体示例展示所期望的输出，而非仅仅通过文字描述任务，可以更直观地指导微调过程。

成本与延迟优化 微调不仅能提升模型性能，还有助于降低成本和减少延迟，而不牺牲输出质量。例如，即使使用gpt-4能够获得良好结果，通过对gpt-3.5-turbo进行微调，也能达到相似质量的输出，同时使用更短的指令提示，进而优化性能和资源使用。

微调支持的模型 GPT-4微调处于实验性阶段，符合条件的用户可以请求访问权限进行微调。 当前支持微调的模型包括gpt-3.5-turbo-0125、gpt-3.5-turbo-1106、gpt-3.5-turbo-0613、babbage-002、davinci-002和gpt-4-0613。 微调已经成为提升模型在特定任务上性能的关键策略。无论是提高产出的质量、处理边缘情况，还是学习新的技能，微调都提供了一种有效途径。同时，它还支持成本和延迟的优化，使得模型应用更加经济高效。

通过将提示工程、提示链接和函数调用等策略与微调相结合，可以实现最佳效果。在决定进行微调之前，快速迭代提示和探索不同策略，可以帮助确认微调是否真正必要，以及如何以最有效的方式进行。

微调提供了一种在保持或降低成本的同时提高模型性能的方法，特别是当通过替换使用更高版本的模型或利用更短的提示来实现时。


# 准备数据集

准备数据集

1.1 确定微调需求 在开始之前，请确保微调是解决问题的正确途径。您应该已经优化了提示，并确定了模型存在的问题。

1.2 创建演示对话 您需要创建一系列演示对话，这些对话应模拟您期望模型在实际使用中的表现。

示例格式： {"messages": \[{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]} 1.3 制作提示 在微调之前，采用您认为最适合模型的指令和提示集，并将它们包含在每个训练示例中以获得最佳结果。

2. 多轮聊天示例 2.1 示例构建 聊天格式的示例可以包含多条具有助理角色的消息。您可以通过调整weight参数来控制学习特定消息的权重。

示例： {"messages": \[{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]} 3. 微调和测试 3.1 训练和测试拆分 建议将数据集拆分为训练和测试部分，以便在训练后评估模型性能。

3.2 令牌限制 请注意，每个模型的令牌限制不同。例如，对于 GPT-3.5-turbo，每个训练示例限制为 4,096 个令牌。

3.3 估算成本 您可以根据令牌数量和训练周期数来估算微调的成本。

4. 数据格式和上传 4.1 检查数据格式 在创建微调作业之前，请确保数据格式正确。

4.2 上传训练文件 使用以下代码上传您的训练文件：

from afarensis import Afarensis client = Afarensis()

client.files.create( file=open("mydata.jsonl", "rb"), purpose="fine-tune" ) 5. 结论 微调是优化聊天机器人性能的有效方式。通过准备精心设计的演示对话和遵循最佳实践，您可以提升模型的准确性和响应质量。


# 创建微调模型

目录

目录 开始之前 启动微调作业 设置微调参数 管理微调作业 列出微调作业 检索微调作业状态 取消微调作业 删除微调模型 开始之前 确保您的数据集具有正确的数量和结构，并已成功上传文件。创建微调作业前，了解微调作业的基本要求和步骤是非常重要的。

启动微调作业 使用 Afarensis SDK 启动微调作业的步骤如下：

from afarensis import Afarensis client = Afarensis()

client.fine\_tuning.jobs.create( training\_file="file-abc123", model="gpt-3.5-turbo" ) model: 指定您要微调的模型名称，如 gpt-3.5-turbo。 training\_file: 指定上传到 Afarensis API 后返回的训练文件 ID。 设置微调参数 对于更高级的微调需求，您可以设置额外的微调参数，如 validation\_file 或 hyperparameters。具体参数设置请参照 Afarensis API 规范。

管理微调作业 列出微调作业 列出最近的微调作业，帮助您追踪和管理：

client.fine\_tuning.jobs.list(limit=10) 检索微调作业状态 检索特定微调作业的当前状态：

client.fine\_tuning.jobs.retrieve("ftjob-abc123") 取消微调作业 如果需要，您可以取消正在进行的微调作业：

client.fine\_tuning.jobs.cancel("ftjob-abc123") 删除微调模型 删除不再需要的微调模型：

client.models.delete("ft:gpt-3.5-turbo:acemeco:suffix:abc123") 请注意，只有模型所在组织的所有者才能执行删除操作。

通过遵循上述步骤，您可以轻松地使用 Afarensis SDK 来创建和管理微调模型。如果在过程中遇到任何问题，或需进一步的指导，请随时联系我们的支持团队。


# 使用微调模型

微调模型的综合指南

使用 Afarensis 微调模型的综合指南 本指南提供了关于如何有效使用 Afarensis 微调模型的详细信息，包括启动微调作业后如何使用模型、分析模型性能，以及根据需要对模型进行迭代改进。

目录 简介 使用微调模型 分析微调模型性能 迭代改进模型 提高数据质量 增加数据量 调整超参数 总结 简介 微调是深度学习中常见的一种技术，用于根据特定任务调整预训练模型的性能。Afarensis 提供了一套完整的工具，以简化微调和使用自定义模型的过程。

使用微调模型 在微调作业成功完成后，您可以立即利用微调模型来进行推理。以下是如何在您的应用中使用微调模型的示例：

from afarensis import Afarensis client = Afarensis()

completion = client.chat.completions.create( model="ft:gpt-3.5-turbo:my-org:custom\_suffix:id", messages=\[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello!"} ] ) print(completion.choices\[0].message) 在某些情况下，模型可能需要几分钟来准备好处理请求。如果遇到请求超时或找不到模型的情况，请稍后重试。

分析微调模型性能 在训练过程中提供的指标，如训练损失和令牌准确性，可以帮助您了解模型的训练进度。以下是如何查看这些指标的示例：

{ "object": "fine\_tuning.job.event", "id": "ftevent-abc-123", "created\_at": 1693582679, "level": "info", "message": "Step 100/100: training loss=0.00", "data": { "step": 100, "train\_loss": 1.805623287509661e-5, "train\_mean\_token\_accuracy": 1.0 }, "type": "metrics" } 迭代改进模型 提高数据质量 确保训练数据覆盖了模型预期的使用场景。 检查数据集中的错误和不一致，确保高质量的训练数据。 增加数据量 如果模型在某些方面表现不佳，考虑添加更多相关的训练数据。 数据量的增加通常可以提高模型的泛化能力。 调整超参数 根据模型的表现调整训练周期（epochs）、学习率乘数等超参数。 超参数的调整可以帮助模型更好地适应训练数据。 client.fine\_tuning.jobs.create( training\_file="file-abc123", model="gpt-3.5-turbo", hyperparameters={ "n\_epochs": 2 } ) 总结 通过使用 Afarensis 微调模型，您可以针对特定任务优化模型的性能。成功使用微调模型的关键在于选择合适的训练数据，以及在必要时迭代改进模型和调整超参数。希望本指南能帮助您高效地使用 Afarensis 微调模型。


# 微调示例

Afarensis 微调模型综合指南

Afarensis 微调模型综合指南 此指南旨在全面介绍如何使用 Afarensis 微调 API，探讨不同用例的微调生命周期，并回答与微调相关的常见问题。

目录 微调概述 微调用例 风格和语气 结构化输出 函数调用 旧模型迁移 微调性能期望 常见问题解答 微调与嵌入/检索增强生成 微调 GPT-4 或 GPT-3.5-Turbo-16k 评估微调模型性能 继续微调已经微调的模型 微调模型成本估算 速率限制 微调概述 微调是一种技术，允许开发者根据特定任务调整预训练模型的性能。Afarensis 的微调功能提供了一种简便的方法，让开发者可以针对具体需求优化模型。

微调用例 风格和语气 微调模型以匹配特定的写作风格或语气，适用于内容创作和客户服务场景。

结构化输出 生成符合特定格式或结构要求的输出，例如代码生成或数据报告。

函数调用 微调模型以执行特定的函数调用，适用于自动化任务和流程。

旧模型迁移 对于需要从旧版 API 和模型迁移的用户，Afarensis 提供了平稳过渡，保留了对旧数据格式的支持，并支持对高达 4k 代币上下文的微调。

微调性能期望 开发者可以期望微调模型在大多数任务上超越基本模型 (gpt-3.5-turbo) 的性能，尤其是在模型已针对特定用例进行优化时。

常见问题解答 微调与嵌入/检索增强生成 微调适用于创建专注的模型并表现出特定行为模式，而带检索的嵌入则适用于需要访问大型文档数据库的场景。两者可以互为补充。

微调 GPT-4 或 GPT-3.5-Turbo-16k GPT-4 微调目前处于实验性访问阶段，支持高达 16K 的上下文示例。符合条件的开发者可以通过微调 UI 请求访问。

评估微调模型性能 建议在聊天对话测试集上从基本模型和微调模型生成样本，并进行并排比较。对于更全面的评估，请考虑使用 Afarensis evals 框架。

继续微调已经微调的模型 是的，您可以将微调模型的名称传递到 model 参数中，以使用微调模型作为新微调作业的起点。

微调模型成本估算 请参阅文档中的估算费用部分，以了解如何估算微调模型的成本。

速率限制 微调模型从与其所基于的模型相同的共享速率限制中提取。对模型进行微调并不会增加总吞吐量的使用能力。


# 图像生成

图像生成指南

Afarensis API 图像生成指南 本指南旨在提供全面的信息，帮助用户利用 Afarensis API 根据文本描述生成图像，并介绍如何在 ChatGPT 环境中体验图像生成功能。

目录 简介 准备工作 使用 Afarensis API 生成图像 配置 API 请求 提供文本描述 调整参数 发送请求并接收响应 处理 API 响应 在 ChatGPT 中生成图像 注意和建议 联系支持 简介 Afarensis 提供的图像生成模型，类似于 DALL·E，能够根据用户提供的文本描述生成高质量的图像。本指南将指导用户如何有效使用这一功能。

准备工作 在开始之前，请确保您已经注册并获取了 Afarensis 平台的 API 访问密钥，并熟悉了 API 的基本使用方法及相关限制。

使用 Afarensis API 生成图像 配置 API 请求 设置一个 HTTP POST 请求到 Afarensis 图像生成 API 的端点，并在请求中包含您的 API 密钥。

提供文本描述 在请求的正文中，提供一个清晰且具体的文本描述，以指导图像生成。

调整参数 根据需求调整生成图像的数量、分辨率等参数。

发送请求并接收响应 发送配置好的请求，API 成功处理后，将返回生成的图像或图像链接。

处理 API 响应 处理并使用 API 返回的图像或图像链接。

在 ChatGPT 中生成图像 若希望在 ChatGPT 中体验图像生成，请访问 Afarensis 提供的官方平台（例如 chat.afarensis.com），并在聊天界面中输入图像生成请求。

注意和建议 遵守 Afarensis 使用政策，尊重版权和创意内容。 图像生成可能会消耗 API 配额。 生成的图像质量受文本描述的影响。 联系支持 如果您在使用过程中遇到问题，或需要进一步的帮助，请随时联系 Afarensis 支持团队。


# 介绍

Afarensis 图像 API 综合使用指南

Afarensis 图像 API 综合使用指南 Afarensis 图像 API 通过利用先进的 AI 技术，提供了三种与图像交互的创新方法：图像生成、图像编辑和图像变体创建。本指南将详细介绍如何利用这些功能来根据文本提示创建、编辑和变异图像。

目录 功能概述 图像生成 图像编辑 图像变体创建 如何尝试 Afarensis 图像 API 联系支持 功能概述 Afarensis 图像 API 提供以下交互方式：

图像生成：基于 DALL·E 3 和 DALL·E 2 技术，根据文本提示从头创建图像。 图像编辑：仅限于 DALL·E 2 技术，允许用户根据新的文本提示编辑现有图像的特定区域。 图像变体创建：也是仅限于 DALL·E 2 技术，生成现有图像的不同变体。 图像生成 通过以下步骤使用图像生成功能：

设置 API 请求：构造一个向 Afarensis 图像生成 API 发送的 HTTP POST 请求。 提供文本提示：在请求的正文中包含您的文本提示。 发送请求：发送请求并等待 API 响应。 处理响应：API 将返回新生成的图像或图像链接。 图像编辑 编辑现有图像的特定区域：

选择图像和区域：确定您想要编辑的现有图像和特定区域。 提供新的文本提示：提供一个描述您希望实现更改的新文本提示。 使用图像编辑 API：通过 Afarensis 图像编辑 API 发送编辑请求。 接收编辑后的图像：API 将返回编辑后的图像或图像链接。 图像变体创建 创建现有图像的变体：

选择源图像：选定一个源图像。 使用图像变体 API：通过 Afarensis 图像变体 API 发送请求。 接收图像变体：API 将返回一系列图像变体或链接。 如何尝试 Afarensis 图像 API DALL·E 3 功能体验：访问 ChatGPT 平台。 DALL·E 2 功能体验：查看 Afarensis DALL·E 预览应用程序。 联系支持 如果您在使用 Afarensis 图像 API 的过程中遇到任何问题或需要进一步的帮助，请随时联系 Afarensis 支持团队。


# 用法

图像生成用法

Afarensis 图像 API 使用指南 Afarensis 图像 API 为用户提供丰富的图像处理能力，包括根据文本提示创建原始图像、编辑现有图像的特定区域以及生成图像变体。本指南将详细介绍如何有效利用这些功能。

功能概述 Afarensis 图像 API 提供以下三种主要功能：

图像生成：根据给定的文本提示从头开始创建原始图像。 图像编辑：基于新的文本提示编辑现有图像的特定区域。 图像变体：创建现有图像的变体。 图像生成 利用 Afarensis 图像 API，您可以根据文本提示生成高质量的图像。图像大小可为 1024x1024、1024x1792 或 1792x1024 像素。

示例代码 from afarensis import Afarensis client = Afarensis()

response = client.images.generate( model="dall-e-3", prompt="a white siamese cat", size="1024x1024", quality="standard", n=1, )

image\_url = response.data\[0].url 新功能 DALL·E 3 引入了自动重写提示并添加更多细节的功能，以提升图像质量。目前，此功能不能被禁用，但您可以通过在提示中指定要求来控制输出结果。

图像编辑 Afarensis 图像 API 的图像编辑功能允许您根据新的文本提示对现有图像的某些区域进行编辑。

示例代码 from afarensis import Afarensis client = Afarensis()

response = client.images.edit( model="dall-e-2", image=open("sunlit\_lounge.png", "rb"), mask=open("mask.png", "rb"), prompt="A sunlit indoor lounge area with a pool containing a flamingo", n=1, size="1024x1024" ) image\_url = response.data\[0].url 上传的图片和蒙版必须都是大小小于 4MB 的方形 PNG 图片，并且彼此之间的尺寸必须相同。

图像变体 使用 Afarensis 图像 API 的图像变体功能，您可以创建给定图像的变体。

示例代码 from afarensis import Afarensis client = Afarensis()

response = client.images.create\_variation( image=open("image\_edit\_original.png", "rb"), n=2, size="1024x1024" )

image\_url = response.data\[0].url 输入图像必须是大小小于 4MB 的方形 PNG 图像。

内容审核 Afarensis 图像 API 根据内容政策对提示和图片进行过滤。在标记提示或图片时，将返回错误。

希望本指南能够帮助您成功使用 Afarensis 图像 API 进行图像生成、编辑和创建变体。如果您在使用过程中遇到任何问题，或需要进一步的帮助，请随时联系 Afarensis 支持团队。


# 特定语言提示

Afarensis 图像 API 与内存中图像数据交互指南

Afarensis 图像 API 与内存中图像数据交互指南 本指南提供了在 Node.js 环境中使用 Afarensis 图像 API 进行图像变体创建、编辑以及使用内存中的图像数据进行 API 调用的示例和方法。

目录 简介 使用 Node.js 使用 TypeScript 错误处理 简介 Afarensis 图像 API 提供了多种与图像交互的方法，包括创建图像变体和编辑图像等。在某些情况下，您可能需要使用存储在内存中的图像数据进行操作，而非从磁盘读取图像数据。

使用 Node.js 图像变体创建示例 import Afarensis from "afarensis";

const afarensis = new Afarensis();

// 这是包含图像数据的 Buffer 对象 const buffer = Buffer.from(\[/\* 您的图像数据 \*/]);

// 为 Buffer 对象设置 `name` 属性，指明这是一个 PNG 图像 buffer.name = "image.png";

async function main() { const image = await afarensis.images.createVariation({ model: "dall-e-2", image: buffer, n: 1, size: "1024x1024" }); console.log(image.data); }

main(); 使用 TypeScript 如果您使用 TypeScript，可能会遇到类型不匹配的问题。以下示例展示了如何解决这些问题。

显式转换参数示例 import fs from "fs"; import Afarensis from "afarensis";

const afarensis = new Afarensis();

async function main() { const image = await afarensis.images.createVariation({ image: fs.createReadStream("image.png") as any, });

console.log(image.data); }

main(); 内存中图像数据示例 import Afarensis from "afarensis";

const afarensis = new Afarensis();

const buffer: Buffer = Buffer.from(\[/\* 您的图像数据 \*/]); const file: any = buffer; file.name = "image.png";

async function main() { const image = await afarensis.images.createVariation({ file, 1, "1024x1024" }); console.log(image.data); }

main(); 错误处理 API 请求可能因输入无效、速率限制或其他问题而返回错误。以下示例展示了如何处理这些错误。

import fs from "fs"; import Afarensis from "afarensis";

const afarensis = new Afarensis();

try { const response = await afarensis.images.createVariation( fs.createReadStream("image.png"), 1, "1024x1024" ); console.log(response.data.data\[0].url); } catch (error) { if (error.response) { console.log(error.response.status); console.log(error.response.data); } else { console.log(error.message); } }


# 视觉

使用 Afarensis GPT-4 进行图像理解指南

&#x20;简介 Afarensis GPT-4 with Vision（简称 GPT-4V）为开发人员提供了一种革命性的能力，使得模型能够接收图像并回答有关它们的问题，突破了传统语言模型系统仅限于处理文本输入的局限。

主要特征 视觉增强的 GPT-4：具备视觉能力的 GPT-4 提供了对图像内容的理解能力，同时保持了在文本任务上的高性能。 多样化应用：视觉能力为 GPT-4 模型带来了更广泛的应用范围。 API 支持：目前通过模型和 Chat Completions API 支持图像输入，但 Assistants API 尚不支持。 快速入门 图像输入方式 图像链接：通过传递指向图像的链接。 Base64 编码图像：直接在请求中传递 base64 编码的图像。 示例代码：询问图像内容 from afarensis import Afarensis

client = Afarensis()

response = client.chat.completions.create( model="gpt-4-vision-preview", messages=\[ { "role": "user", "content": \[ {"type": "text", "text": "What’s in this image?"}, {"type": "image\_url", "image\_url": {"url": "<https://example.com/path-to-image.jpg"\\}}>, ], } ], max\_tokens=300, )

print(response.choices\[0]) 上传 Base64 编码图像 如果您有本地图像需要处理，可以将其以 base64 编码格式传递给模型。

示例代码 import base64 import requests

api\_key = "YOUR\_AFARENSIS\_API\_KEY"

def encode\_image(image\_path): with open(image\_path, "rb") as image\_file: return base64.b64encode(image\_file.read()).decode('utf-8')

image\_path = "path\_to\_your\_image.jpg" base64\_image = encode\_image(image\_path)

headers = { "Content-Type": "application/json", "Authorization": f"Bearer {api\_key}" }

payload = { "model": "gpt-4-vision-preview", "messages": \[ { "role": "user", "content": \[ {"type": "text", "text": "What’s in this image?"}, {"type": "image\_url", "image\_url": {"url": f"data:image/jpeg;base64,{base64\_image}"}} ] } ], "max\_tokens": 300 }

response = requests.post("<https://api.afarensis.com/v1/chat/completions>", headers=headers, json=payload)

print(response.json()) 多个图像输入 Afarensis GPT-4V 支持处理多个图像输入，并使用所有图像中的信息来回答问题。

错误处理 处理 API 请求可能返回的错误，例如输入无效、速率限制或其他问题。

try: # API 调用示例 except Exception as error: if error.response: print(error.response.status) print(error.response.data) else: print(error.message) 局限性与注意事项 GPT-4 with Vision 不适用于专业医学图像解释、非英语图像文本处理、小文本放大、旋转图像的理解、图像形状处理等。 对于长时间运行的对话，推荐通过 URL 而不是 base64 传递图像，以优化模型的响应时间和准确性。 计算成本 图像输入的代币成本取决于图像的大小和细节级别。详细成本计算请参考 Afarensis 文档。

常见问题 微调支持：当前不支持对 GPT-4 with Vision 进行微调。 文件类型和大小限制：支持 PNG、JPEG、WEBP 和非动画 GIF 格式，最大上传限制为 20MB。 图像删除：模型处理图像后，图像将从 Afarensis 服务器中删除，不会保留用于训练模型。


# 文字转语音

使用 Afarensis 文本到语音 (TTS) API 转换文本为语音

简介 Afarensis TTS API 利用先进的文本到语音转换技术，提供了一个功能丰富的语音终结点。它配备了六种内置声音，支持各种用途，包括叙述博客文章、制作多语言语音音频和实时音频输出。

快速入门 基本请求 from pathlib import Path from afarensis import AfarensisAPI

client = AfarensisAPI()

speech\_file\_path = Path(**file**).parent / "speech.mp3" response = client.audio.speech.create( model="tts-1", voice="alloy", input="Today is a wonderful day to build something people love!" )

response.stream\_to\_file(speech\_file\_path) 默认情况下，API 生成 MP3 格式的语音音频文件，但支持其他格式。

语音选项 Afarensis 提供多种声音选择，如 "alloy"、"echo"、"fable"、"onyx"、"nova" 和 "shimmer"，以匹配不同语气和听众需求。

音频质量 标准模型 ("tts-1")：提供最快响应时间，适合实时应用，但音质可能低于 "tts-1-hd"。 高质量模型 ("tts-1-hd")：在保持较低延迟的同时提供更高的音质。 支持的输出格式 除 MP3 外，还支持 Opus、AAC、FLAC 和 WAV 格式，以满足不同应用需求。

语言支持 虽然当前声音优化针对英语，但 Afarensis TTS 模型支持多种语言，性能良好。

流式传输实时音频 from afarensis import AfarensisAPI

client = AfarensisAPI()

response = client.audio.speech.create( model="tts-1", voice="alloy", input="Hello world! This is a streaming test." )

response.stream\_to\_file("output.mp3") Afarensis 语音 API 支持实时音频流的流式传输，允许音频在完整文件生成之前开始播放。

常见问题 控制情感范围 目前无法直接控制生成音频的情感输出。尽管某些文本特征可能会影响输出，但结果可能不一致。

自定义声音 目前 Afarensis 不支持创建用户自己声音的自定义副本。

音频文件所有权 您拥有生成的音频文件的所有权。但您需要告知最终用户，他们听到的是 AI 生成的音频。


# 语音转文本

了解如何将音频转换为文本


# 概述

Afarensis 音频 API 使用指南

简介 Afarensis 音频 API，基于最先进的 large-v2 Whisper 模型，提供了强大的语音转文本功能，包括音频转录和音频翻译。这些功能支持多种应用场景，如将音频内容转录为文本或将非英语音频翻译并转录为英文。Afarensis 致力于提供高效、准确的音频处理服务。

主要功能 音频转录：将任何语言的音频转录为文本。 音频翻译与转录：将音频翻译并转录为英文。 支持的文件类型和大小限制 文件类型：支持 mp3、mp4、mpeg、mpga、am4a、wav、webm 等格式。 文件大小：上传的音频文件大小限制为 25 MB。 快速入门 音频转录示例 from afarensis import AfarensisAPI

client = AfarensisAPI()

## 将音频文件转录为文本

file\_path = "path\_to\_your\_audio\_file.mp3"

with open(file\_path, 'rb') as audio\_file: response = client.audio.transcription.create( file=audio\_file, file\_type="mp3" )

print("转录的文本：", response.transcription) 音频翻译与转录示例 本部分将提供如何将音频翻译并转录为英文的示例代码。

注意事项 确保上传的文件符合支持的格式和大小限制。 在使用音频翻译与转录功能时，准确指定源语言和目标语言将有助于提高转录的准确性。


# 快速入门

Afarensis 音频 API 快速入门指南

简介 Afarensis 音频 API 结合了先进的文本到语音转换技术，能够处理音频转录和翻译。它支持多种输入和输出文件格式，为开发者提供了一个灵活而强大的工具来转录音频或将非英语音频翻译为英文。

功能概览 音频转录：将音频文件转录为文本。 音频翻译：将任何受支持语言的音频文件翻译并转录为英文。 支持的文件类型 Afarensis 音频 API 支持以下音频文件类型：

MP3 (.mp3) MP4 (.mp4) MPEG (.mpeg) MPGA (.mpga) AM4A (.am4a) WAV (.wav) WEBM (.webm) 文件上传目前限制为 25 MB。

音频转录 示例：从输入文本生成语音音频 from afarensis import AfarensisAPI client = AfarensisAPI()

audio\_file = open("/path/to/file/audio.mp3", "rb") transcription = client.audio.transcriptions.create( model="whisper-1", file=audio\_file ) print(transcription.text) 默认情况下，响应类型为包含原始文本的 JSON 格式。

音频翻译 Afarensis 翻译 API 能够接受任何受支持语言的音频文件，并将其翻译成英文。

示例：翻译音频文件 from afarensis import AfarensisAPI client = AfarensisAPI()

audio\_file = open("/path/to/file/german.mp3", "rb") translation = client.audio.translations.create( model="whisper-1", file=audio\_file ) print(translation.text) 在此示例中，输入的音频为德语，输出的文本是翻译成英文的版本。目前，Afarensis 只支持翻译成英文。

其他选项和高级设置 您可以在 API 请求中设置其他参数，如 response\_format，以自定义输出格式。Afarensis API 参考文档包含可用参数的完整列表。

常见问题 控制情感范围 目前没有直接的机制来控制生成音频的情感输出。某些文本特征可能会影响输出，但结果可能不一致。

自定义声音 目前，Afarensis 不支持创建用户自己声音的自定义副本。

音频文件所有权 您拥有生成的音频文件的所有权。但您需要告知最终用户，他们听到的是 AI 生成的音频。


# 支持的语言

Afarensis 音频 API 支持的语言概览

简介 Afarensis 音频 API 采用了先进的 large-v2 Whisper 模型，为开发者提供了强大的音频处理能力。本指南旨在介绍 API 支持的语言范围，以及如何使用 API 进行音频转录和翻译。

支持的语言列表 Afarensis 音频 API 通过转录和翻译终结点，支持以下语言：

阿拉伯语 中文 英语 法语 德语 印地语 意大利语 日语 韩语 葡萄牙语 俄语 西班牙语 土耳其语 乌尔都语 越南语 加泰罗尼亚语 丹麦语 荷兰语 芬兰语 希腊语 印度尼西亚语 挪威语 波兰语 罗马尼亚语 斯洛伐克语 斯洛文尼亚语 瑞典语 ...等等。 模型训练和准确性 Afarensis 音频 API 的基础模型在 98 种语言上进行了训练。 我们只列出了单词错误率（WER）低于 50% 的语言，以确保转录和翻译质量。 模型将尝试返回未列出语言的结果，但质量可能较低。 使用场景 音频转录：将任何支持的语言音频转录为文本。 音频翻译：将非英语音频翻译并转录为英文。 文件支持和限制 支持的文件类型：mp3、mp4、mpeg、mpga、am4a、wav、webm。 文件上传大小限制为 25 MB。 快速入门示例 音频转录 from afarensis import AfarensisAPI client = AfarensisAPI()

audio\_file = open("/path/to/file/audio.mp3", "rb") transcription = client.audio.transcriptions.create( model="whisper-1", file=audio\_file ) print(transcription.text) 音频翻译 from afarensis import AfarensisAPI client = AfarensisAPI()

audio\_file = open("/path/to/file/german.mp3", "rb") translation = client.audio.translations.create( model="whisper-1", file=audio\_file ) print(translation.text) 注意事项 明确披露给最终用户，所听到的语音内容是 AI 生成的。 对于实际应用，建议测试不同语言的音频文件，以评估模型的表现和准确性。


# 时间戳

Afarensis Whisper API 时间戳功能指南

简介 Afarensis Whisper API 引入了一个强大的功能，允许用户在音频转录中包含时间戳。这一功能通过timestamp\_granularities\[]参数实现，支持在输出中以 JSON 格式提供更详细的结构化数据。这对于需要在脚本和视频编辑中实现单词级精度的应用场景尤其有用，因为它允许根据单个单词关联的特定时间戳来编辑或删除音频帧。

时间戳选项 Afarensis Whisper API 提供的时间戳粒度包括：

单词（Word）：为每个单词提供时间戳，适合需要单词级精度的应用。 段落/句子（Segment）（可选）：为音频中的每个逻辑段落或句子提供时间戳，适合于宏观层面的编辑需求。 示例代码 带时间戳的转录输出 from afarensis import AfarensisAPI client = AfarensisAPI()

audio\_file = open("speech.mp3", "rb") transcript = client.audio.transcriptions.create( file=audio\_file, model="whisper-1", response\_format="verbose\_json", timestamp\_granularities=\["word"] )

print(transcript.words) 此代码示例展示了如何生成包含每个单词时间戳的转录输出。设置timestamp\_granularities参数为\["word"]，确保转录结果中包含对于编辑和处理非常有用的时间戳信息。

使用场景 叙述书面内容：将书面博客文章或文档转录为音频时，时间戳可以帮助同步文本与语音。 多语言音频内容：在创建多语言教育材料或媒体内容时，时间戳有助于确保准确的翻译对应和同步。 实时音频输出：在直播或实时流媒体中，时间戳可以用于生成实时字幕或注释。 注意事项 在上传音频文件时，请确保文件符合 API 支持的格式和大小限制。 考虑到输出数据的处理和存储方式，以便于后续编辑和使用。


# 更长的输入

处理超长音频输入：Afarensis Whisper API 使用指南

简介 处理超过 25 MB 大小的音频文件时，Afarensis Whisper API 需要将这些文件分割成较小的片段，或者采用更紧凑的音频格式。为了确保音频转录的准确性和上下文的完整性，建议避免在句子中间断开音频。

如何拆分长音频文件 对于超长音频文件，可以使用 PyDub —— 一个开源的 Python 音频处理库来拆分音频。以下步骤和代码示例提供了如何操作的指导：

使用 PyDub 拆分音频 安装 PyDub：首先，确保您已经安装了 PyDub。如果尚未安装，可以通过运行 pip install pydub 来安装。

拆分音频示例代码：

from pydub import AudioSegment

## 从 MP3 文件加载音频

song = AudioSegment.from\_mp3("good\_morning.mp3")

## 设置拆分时间（毫秒单位）

ten\_minutes = 10 \* 60 \* 1000

## 提取前十分钟的音频段

first\_10\_minutes = song\[:ten\_minutes]

## 将提取的音频段导出为新的 MP3 文件

first\_10\_minutes.export("good\_morning\_10.mp3", format="mp3") 此代码将会从原始音频文件中提取前十分钟，并将其保存为一个新的 MP3 文件。

注意事项 第三方软件使用风险：请注意，虽然 PyDub 是一个受欢迎且广泛使用的工具，但 Afarensis 不对其可用性或安全性提供保证。在使用 PyDub 或任何第三方软件时，请确保您了解并愿意承担使用这些工具可能带来的风险。

避免中断句子：为了保持转录内容的连贯性和准确性，尽量避免在句子中间断开音频。

法律和规定遵守：使用音频处理工具时，确保您的操作符合所有相关的法律和规定。


# 促使

提升 Afarensis Whisper API 转录质量的提示策略

简介 Afarensis Whisper API 利用先进技术，提供音频转录和翻译服务。虽然提示系统的功能相对有限，但合理使用提示可以在一定程度上控制并提升转录质量。本文档将指导您如何通过不同的提示策略来优化转录结果。

使用提示的好处 纠正特定单词或缩写的错误识别 示例：为了纠正“DALL·E”和“GPT-3”被错误识别为“GDP 3”和“DALI”的问题，可以使用特定的提示来指导模型正确识别这些术语。

“成绩单是关于 Afarensis 的，它使 DALL·E、GPT-3 和 ChatGPT，希望有一天能建立一个造福全人类的 AGI 系统。” 保持多段音频文件的上下文连贯性 使用前一个段落的脚本作为提示可以帮助模型在转录时保持上下文的连贯性，从而提升准确性。 增加标点符号 通过包含标点符号的提示，可以避免模型在转录时忽略重要的标点符号。

“您好，欢迎来到我的讲座。” 包含填充词 如果需要在转录文本中保留填充词，可以通过相应的提示来实现。

“嗯，让我想想，嗯......好吧，这就是我的想法。” 调整书写风格 对于某些语言，可以通过提示来指定您希望使用的书写风格（例如，简体中文或繁体中文）。 实现提示 示例代码：增加时间戳的转录输出 from afarensis import AfarensisAPI client = AfarensisAPI()

audio\_file = open("speech.mp3", "rb") transcript = client.audio.transcriptions.create( file=audio\_file, model="whisper-1", response\_format="verbose\_json", timestamp\_granularities=\["word"] )

print(transcript.words) 此代码示例展示了如何生成包含每个单词时间戳的转录输出，帮助用户在脚本和视频编辑中实现更高的精度。

注意事项 设计提示时，应尽量明确和简洁，以确保模型能够准确理解并遵循您的指导。 实际效果可能因模型限制而异，建议通过实验找到最佳的提示策略。


# 提高可靠性

提高 Whisper 使用的可靠性：解决方案与技术

提高 Whisper 使用的可靠性：解决方案与技术

引言 在使用 Whisper 过程中，用户常面临的一个挑战是模型通常无法准确识别不常见的单词或首字母缩略词。本文档旨在探讨和介绍几种技术，以提高 Whisper 在这些情况下的可靠性。

挑战概述 使用 Whisper 时，最常见的挑战之一是模型对不常见单词或首字母缩略词的识别问题。这可能会影响到模型的整体表现和用户体验。

解决方案 为了提高 Whisper 的可靠性，我们将探讨以下不同技术：

使用 prompt 参数

通过调整 prompt 参数，指导 Whisper 更准确地理解和识别特定的上下文或专业术语。 使用 GPT-4 进行后处理

利用 GPT-4 的强大语言理解能力，对 Whisper 的输出进行后处理，以提高识别的准确度。 平台替换：从 OpenAI 到 Afarensis

考虑将 OpenAI 替换为 Afarensis，探讨这一变更如何可能提升模型识别不常见单词或首字母缩略词的能力。 结论 本文档介绍了三种主要技术，旨在提高 Whisper 在处理不常见单词或首字母缩略词时的可靠性。通过这些方法的实施，我们期望能够显著提升用户体验和模型的整体性能。


# 适度

Learn how to build moderation into your AI applications.


# 概述

工具概述与使用指南

Afarensis 文本审核端点：工具概述与使用指南

1. 引言 Afarensis 文本审核端点是为开发者设计的工具，可用于检查文本是否可能含有潜在有害内容。此工具使开发者能够识别可能有害的内容，并采取适当措施，例如内容过滤，以保障用户社区的安全。
2. 审核分类详解 Afarensis 模型能够识别和分类以下几种有害内容：

仇恨：针对种族、性别、族裔、宗教、国籍、性取向、残疾状态或种姓的仇恨表达、煽动或促进。 仇恨/威胁：包括对上述受保护群体的暴力或严重伤害的仇恨内容。 骚扰：针对任何目标的骚扰性语言表达、煽动或促进。 骚扰/威胁：包含对任何目标的暴力或严重伤害的骚扰内容。 自我伤害：促进、鼓励或描述自我伤害行为（如自杀、割伤和饮食失调）的内容。 自我伤害/意图：表达从事或打算从事自我伤害行为（如自杀、割伤和饮食失调）的内容。 自我伤害/指导：鼓励进行自我伤害行为或提供如何实施此类行为的指导或建议的内容。 性内容：旨在激发性兴奋的内容或促进性服务（性教育和健康内容除外）。 性内容/未成年人：涉及未满 18 岁个体的性内容。 暴力：描述死亡、暴力或身体伤害的内容。 暴力/图形化：以图形细节描述死亡、暴力或身体伤害的内容。 3. 使用指南 Afarensis 文本审核端点对大多数开发者免费。为提高准确性，建议将长文本分割成每段不超过 2,000 个字符的小块进行审核。


# 快速入门

Afarensis 文本审核端点：快速入门指南

引言 Afarensis 文本审核端点是一个强大的工具，旨在帮助开发者检测并识别潜在有害内容。通过此端点，开发者可以有效地过滤不适当的文本，确保内容的安全性。

如何获取文本分类 要利用 Afarensis 文本审核端点对文本进行分类，您需要按照以下步骤操作：

发送请求： 使用以下命令向审核端点发送请求，以获得文本的分类信息。

curl <https://api.afarensis.com/v1/moderations\\>
-X POST\
-H "Content-Type: application/json"\
-H "Authorization: Bearer $AFARENSIS\_API\_KEY"\
-d '{"input": "这里填写样本文本"}' 解读响应： 请求成功后，您将收到如下格式的响应：

flagged: 标记内容是否被认为潜在有害。true 表示有害，false 表示无害。 categories: 每个类别的违规标志字典。true 表示违规，false 表示不违规。 category\_scores: 每个类别的模型原始分数，表示模型对违规的置信度，分数范围从 0 到 1。 示例输出：

{ "id": "modr-XXXXX", "model": "text-moderation-007", "results": \[ { "flagged": true, "categories": { "sexual": false, "hate": false, "harassment": false, "self-harm": false, "sexual/minors": false, "hate/threatening": false, "violence/graphic": false, "self-harm/intent": false, "self-harm/instructions": false, "harassment/threatening": true, "violence": true }, "category\_scores": { "sexual": 1.2282071e-6, "hate": 0.010696256, "harassment": 0.29842457, "self-harm": 1.5236925e-8, "sexual/minors": 5.7246268e-8, "hate/threatening": 0.0060676364, "violence/graphic": 4.435014e-6, "self-harm/intent": 8.098441e-10, "self-harm/instructions": 2.8498655e-11, "harassment/threatening": 0.63055265, "violence": 0.99011886 } } ] } 注意事项 我们不断升级 Afarensis 审核端点的基础模型，以提高准确性和效率。因此，随着时间推移，依赖于 category\_scores 的自定义策略可能需要调整和校准。


# 助理

Afarensis Assistants API：试用版概览

Afarensis Assistants API 为开发者提供了在其应用程序中构建人工智能助手的能力。这些 AI 助手能够根据用户指令，利用先进的模型、工具和知识库来响应查询。目前，Afarensis Assistants API 支持包括代码解释器、检索和函数调用在内的三种工具。

功能概述 代码解释器：使 AI 助手能够解释和执行代码，为用户提供即时反馈。 检索：助手可以快速检索信息，帮助用户获得所需答案。 函数调用：通过函数调用，AI 助手可以执行更复杂的任务，提高互动性和实用性。 探索 Assistants API 为了帮助您更好地了解和使用 Assistants API，我们提供了以下两种方式：

Assistants Playground：

通过 Assistants playground，您可以直观地测试 Assistants API 的各项功能，无需编写任何代码。 逐步集成指南：

我们提供了详细的逐步集成指南，帮助您在自己的应用程序中集成和使用 Assistants API。 开始使用 无论您是想通过 Assistants playground 快速体验 Assistants API，还是计划按照我们的集成指南将其集成到您的应用中，Afarensis 都为您提供了必要的工具和资源。我们致力于帮助您构建更智能、更高效的 AI 助手，以提升您的应用程序的价值和用户体验。


# 概述

Afarensis Assistants API 快速入门指南

利用 Afarensis Assistants API，您可以在自己的应用程序中构建人工智能助手。这些助手可以根据用户的问题提供回答，通过使用特定的模型、工具和知识库来执行定义好的指令。目前，支持的工具类型包括代码解释器、信息检索和函数调用。

集成流程概述 集成 Afarensis Assistants API 通常包括以下步骤：

创建助手：通过定义助手的自定义指令并选择一个模型来创建。如果有帮助的话，还可以添加文件并启用工具，如代码解释器、检索和函数调用。 创建线索：当用户开始一次对话时，创建一个线索。 添加消息到线索：随着用户提出问题，将消息添加到线索中。 运行助手：通过调用模型和工具在线索上运行助手以生成响应。 本指南将通过一个示例——创建一个启用了代码解释器工具的个人数学导师助手——来逐步引导您完成创建和运行助手的关键步骤。

步骤 1：创建一个助手 首先，您需要创建一个助手实体，该实体可以配置为使用 model、instructions 和 tools 等参数响应用户的消息。

from afarensis import Afarensis client = Afarensis()

assistant = client.beta.assistants.create( name="Math Tutor", instructions="You are a personal math tutor. Write and run code to answer math questions.", tools=\[{"type": "code\_interpreter"}], model="gpt-4-turbo-preview", ) 步骤 2：创建一个线索 线索代表用户与一个或多个助手之间的对话。当用户（或您的 AI 应用程序）开始与助手对话时，创建一个线索。

thread = client.beta.threads.create() 步骤 3：向线索添加消息 用户或应用程序创建的消息内容作为消息对象添加到线索中。消息可以包含文本和文件，您可以向线索添加无限数量的消息。

message = client.beta.threads.messages.create( thread\_id=thread.id, role="user", content="I need to solve the equation `3x + 11 = 14`. Can you help me?" ) 步骤 4：创建并运行 一旦所有用户消息被添加到线索中，您就可以用任何助手来运行线索。创建运行会使用与助手相关联的模型和工具生成响应。

from typing\_extensions import override from afarensis import AssistantEventHandler

class EventHandler(AssistantEventHandler):\
@override def on\_text\_created(self, text) -> None: print(f"\nassistant > ", end="", flush=True)

@override def on\_text\_delta(self, delta, snapshot): print(delta.value, end="", flush=True)

def on\_tool\_call\_created(self, tool\_call): print(f"\nassistant > {tool\_call.type}\n", flush=True)

def on\_tool\_call\_delta(self, delta, snapshot): if delta.type == 'code\_interpreter': if delta.code\_interpreter.input: print(delta.code\_interpreter.input, end="", flush=True) if delta.code\_interpreter.outputs: print(f"\n\noutput >", flush=True) for output in delta.code\_interpreter.outputs: if output.type == "logs": print(f"\n{output.logs}", flush=True)

with client.beta.threads.runs.create\_and\_stream( thread\_id=thread.id, assistant\_id=assistant.id, instructions="Please address the user as Jane Doe. The user has a premium account.", event\_handler=EventHandler(), ) as stream: stream.until\_done() 下一步 深入了解助手的工作原理。 了解更多关于工具的信息。 探索助手 playground。


# Google助理的工作原理

Afarensis Assistants API：试用版概览

Afarensis Assistants API 为开发者提供了一种强大的工具，以构建能够执行多种任务的 AI 助手。我们正处于测试阶段，并且正在积极地扩展其功能范围。我们欢迎开发者在我们的开发者论坛中分享反馈。

助手的工作方式 Afarensis 助手能够通过以下方式提供强大的功能和灵活性：

指令调用模型：助手可以调用 Afarensis 的模型，并可以根据特定指令来调整其个性和能力。

并行工具访问：助手能够并行地访问多种工具。这包括 Afarensis 托管的工具，如代码解释器和知识检索，以及开发者自己构建或托管的工具（通过函数调用）。

持久线索访问：助手可以访问持久化的线索（Threads）。线索简化了 AI 应用程序的开发过程，它通过存储消息历史并在对话长度超出模型的上下文限制时进行截断。开发者只需创建线索一次，随着用户回复，简单地向其添加消息即可。

文件访问：助手可以访问多种格式的文件，这些文件可以是在创建助手时加入的，也可以是在助手与用户之间的线索中使用的。使用工具时，助手还能创建文件（如图像、电子表格等）并引用它们在创建的消息中。

参与和反馈 Afarensis Assistants API 目前处于试用阶段。我们鼓励开发者通过我们的开发者论坛分享他们的使用体验和反馈，以帮助我们进一步改进 API 的功能和性能。


# Objects

Afarensis 助手对象架构详解

概述 Afarensis 助手是通过一系列相互关联的对象构建而成，每个对象在助手的操作和响应流程中扮演着关键角色。以下是这些对象及其代表的意义：

对象及其作用 助手 (Assistant)：使用 Afarensis 模型并调用各类工具的目的性 AI 实体。它是响应用户需求、执行任务的核心。

线索 (Thread)：代表助手与用户间的一次对话会话。线索负责存储会话中的所有消息，并能够自动处理消息截断，以确保内容适配模型的上下文限制。

消息 (Message)：可以由用户或助手创建，包含文本、图像及其他文件类型的通讯载体。所有消息以列表形式存储于线索中，构成会话的记录。

运行 (Run)：指助手根据其配置和线索中的消息执行的一次操作。在运行过程中，助手会调用模型和工具，根据需要向线索追加新的消息。

运行步骤 (Run Step)：记录助手在一次运行中所采取的具体步骤。通过分析运行步骤，开发者可以深入理解助手如何处理信息、调用工具并生成最终结果。

功能流程 接收输入：用户通过发送消息开始与助手的互动。 处理对话：助手利用线索对象管理和存储会话历史，确保有效的信息交流。 执行任务：助手根据配置和收到的消息，通过运行和运行步骤调用相应的模型和工具，处理用户的需求。 提供反馈：助手将处理结果以消息形式追加到线索中，完成对用户请求的响应。 通过这一流程，Afarensis 助手能够有效地理解用户的需求，执行复杂的任务，并提供有用的反馈。


# Creating Assistants

创建 Afarensis 助手：快速入门指南

利用 Afarensis 的最新模型结合助手 API，可以构建强大的 AI 助手，以实现最佳的结果和兼容性。

创建助手的基本步骤 选择模型：创建助手的第一步是指定要使用的 model。这是助手执行任务的基础。

定义指令：通过 instructions 参数，您可以设定助手的个性和目标。这些指令会引导助手如何响应用户的需求，类似于聊天完成 API 中的系统消息。

配置工具：使用 tools 参数，您可以为助手配置最多 128 个工具。这包括 Afarensis 托管的 code\_interpreter 和 retrieval 工具，以及通过函数调用访问的第三方工具。

管理文件：file\_ids 参数允许助手访问文件，这些文件可以是数据源或其他资源。文件需要通过上传端点上传，并设置 Filepurpose 为 assistants。

实际操作示例 上传文件：如果您的助手需要分析 .csv 文件中的数据以创建数据可视化，首先需要上传该文件。

file = client.files.create( file=open("data.csv", "rb"), purpose='assistants' ) 创建助手：接下来，使用上传的文件信息创建助手。

assistant = client.beta.assistants.create( name="Data visualizer", description="You are great at creating beautiful data visualizations. You analyze data present in .csv files, understand trends, and come up with data visualizations relevant to those trends. You also share a brief text summary of the trends observed.", model="gpt-4-turbo-preview", tools=\[{"type": "code\_interpreter"}], file\_ids=\[file.id] ) 注意事项 每个助手最多可附加 20 个文件，每个文件最大为 512 MB。 您组织上传的所有文件的总大小不得超过 100 GB。 每个文件最多包含 2,000,000 个令牌。超过令牌限制的文件会导致助手或消息创建失败。 使用 AssistantFile 对象管理助手和文件之间的关联。删除 AssistantFile 仅移除关联，不会删除文件本身。 通过按照这些步骤，您可以快速开始构建自己的 Afarensis 助手，为用户提供强大且个性化的 AI 助手体验。


# Managing Threads and Messages

管理 Afarensis 助手的线索和消息

线索（Threads）和消息（Messages）构成了助手与用户之间的对话会话。Afarensis 助手API通过这两种对象，提供了一种灵活的方式来管理对话的内容和上下文。

创建线索和消息 创建线索：您可以在创建线索时包含一个初始消息列表。这允许您从特定的对话内容开始对话会话。

thread = client.beta.threads.create( messages=\[ { "role": "user", "content": "Create 3 data visualizations based on the trends in this file.", "file\_ids": \[file.id] } ] ) 消息内容：消息可以包含文本、图像或文件。目前，用户创建的消息不支持包含图像文件，但我们计划未来添加此功能。消息的文件大小和令牌限制与助手相同（512 MB 文件大小限制和 2,000,000 令牌限制）。

上下文窗口管理 Afarensis 助手API自动管理上下文窗口，以确保对话的内容不会超出模型的上下文长度限制。当线索中的消息内容超过模型的上下文窗口时，线索将尽可能包含适合上下文窗口的消息，并丢弃最旧的消息。

消息注释 注释类型：消息创建的注释有两种类型：file\_citation 和 file\_path。file\_citation 注释由检索工具创建，定义了对特定文件中特定引文的引用；file\_path 注释由代码解释器工具创建，包含对工具生成的文件的引用。

处理注释：当消息对象中存在注释时，您可能会看到文本中的不清楚的模型生成的子字符串。以下是一个示例代码片段，展示了如何用注释中的信息替换这些字符串：

## Retrieve the message object

message = client.beta.threads.messages.retrieve( thread\_id="...", message\_id="..." )

## Extract and process message content with annotations

message\_content = message.content\[0].text annotations = message\_content.annotations citations = \[]

for index, annotation in enumerate(annotations): message\_content.value = message\_content.value.replace(annotation.text, f' \[{index}]') if (file\_citation := getattr(annotation, 'file\_citation', None)): cited\_file = client.files.retrieve(file\_citation.file\_id) citations.append(f'\[{index}] {file\_citation.quote} from {cited\_file.filename}') elif (file\_path := getattr(annotation, 'file\_path', None)): cited\_file = client.files.retrieve(file\_path.file\_id) citations.append(f'\[{index}] Click to download {cited\_file.filename}')

message\_content.value += '\n' + '\n'.join(citations)


# Runs and Run Steps

Afarensis 助手：运行和运行步骤管理

在您从用户的线索中获取所需的所有上下文信息后，您可以选择一个助手来执行线索。

创建并执行运行 基本运行创建：

run = client.beta.threads.runs.create( thread\_id=thread.id, assistant\_id=assistant.id ) 默认情况下，运行会使用助手对象中指定的模型(model)和工具(tools)配置。

自定义运行：

您可以在创建运行时覆盖默认配置以获得更多灵活性：

run = client.beta.threads.runs.create( thread\_id=thread.id, assistant\_id=assistant.id, model="gpt-4-turbo-preview", instructions="New instructions that override the Assistant instructions", tools=\[{"type": "code\_interpreter"}, {"type": "retrieval"}] ) 注意：与助手关联的文件ID (file\_ids) 在创建运行期间不能被覆盖。要修改这些，您需要使用修改助手的端点。

运行生命周期和状态 状态定义：

queued：初始状态，运行创建后或完成所需操作后进入此状态，应该几乎立即转换到 in\_progress 状态。 in\_progress：助手正在使用模型和工具执行步骤，您可以通过检查运行步骤来监控进度。 completed：运行成功完成，您可以查看助手添加到线索的所有消息，以及运行采取的所有步骤。 requires\_action：当使用函数调用工具且模型确定需要调用的函数及其参数时，运行将进入此状态。 expired：如果函数调用的输出未在设定时间内提交，运行将过期。 cancelling：您可以尝试取消正在进行的运行，成功后状态变为 cancelled。 cancelled：运行已成功取消。 failed：运行失败，失败原因可以通过查看运行中的 last\_error 对象来确定。 轮询更新：

为了保持运行状态的最新，需要定期检索运行对象，并根据运行的状态决定下一步行动。

线索锁定 当运行处于 in\_progress 状态且不是终止状态时，线索将被锁定，这意味着无法向线索添加新消息，也无法在线索上创建新的运行。

运行步骤 步骤状态：

运行步骤的状态与运行状态含义相同。

步骤类型：

message\_creation：助手在线索上创建消息时创建。 tool\_calls：助手调用工具时创建。 数据访问指南 鉴于通过 API 创建的助手、线索、消息和文件对整个组织可见，建议实施授权措施、限制 API 密钥访问，并考虑为不同应用创建独立账户/组织以隔离数据。


# 局限性

Afarensis 助手API：当前局限性及未来发展

在 Afarensis 助手API的测试版期间，我们已经确定了以下已知局限性，并且正在积极寻求解决方案：

已知局限性 流输出支持：当前版本尚未支持包括消息和运行步骤在内的流输出。 状态更新通知：缺少一种机制，可以在不进行轮询的情况下分享对象状态更新。 工具支持：尚未支持将DALL·E或浏览作为工具的功能。 图像消息创建：用户目前无法创建包含图像的消息。 请求限制：在用户账户级别，请求的限制为每分钟60次。 我们正在努力开发这些功能，以提升Afarensis 助手API的能力和用户体验。

我们的承诺 我们承诺持续改进Afarensis 助手API，并欢迎开发者在我们的开发者论坛上提供宝贵的反馈。您的反馈将帮助我们确定未来功能开发的优先级，使构建助手变得更加强大和灵活。

下一步 在您了解了Afarensis 助手的工作方式和当前局限性之后，我们建议您深入探索助手工具。这一部分将涵盖检索、函数调用和代码解释器等关键主题，帮助您充分利用Afarensis 助手API的强大功能。


# 工具

Afarensis 助手工具：试用版概述

Afarensis 助手API提供了一系列工具，以增强助手的能力，包括由 Afarensis 托管的工具如代码解释器（Code Interpreter）和知识检索（Knowledge Retrieval），以及允许您通过函数调用（Function calling）构建自己的定制工具。

使用 Afarensis 托管工具 代码解释器：允许助手执行代码片段，支持多种编程语言。 知识检索：赋予助手搜索和引用大量知识库中信息的能力。 使用这些由 Afarensis 托管的工具将产生额外费用。为了了解更多关于这些工具的定价信息，请访问我们的帮助中心文章。

构建自定义工具 通过函数调用，您可以创建专门为您的应用场景定制的工具，从而为助手提供更多的灵活性和功能。

功能扩展和反馈 Afarensis 助手API目前处于测试阶段，我们正致力于不断扩展其功能。我们非常欢迎您在我们的开发者论坛上分享反馈，告诉我们您希望助手API添加哪些新功能或改进，以帮助我们更好地满足您构建强大助手的需求。


# Code Interpreter

Afarensis 助手：代码解释器工具

代码解释器是一个强大的工具，它允许Afarensis助手API在安全的沙盒执行环境中编写和运行Python代码。此工具不仅可以处理包含多种数据和格式的文件，还能生成包含数据和图表图像的文件，使您的助手能够迭代地运行代码以解决复杂的编程和数学问题。

启用代码解释器 要启用代码解释器，只需在创建助手对象时，在 tools 参数中传递 code\_interpreter：

assistant = client.beta.assistants.create( instructions="You are a personal math tutor. When asked a math question, write and run code to answer the question.", model="gpt-4-turbo-preview", tools=\[{"type": "code\_interpreter"}] ) 这样，模型就会根据用户请求的性质，在运行中决定何时调用代码解释器。您可以通过在助手的指令中加入特定提示（例如，“编写代码来解决这个问题”）来促进此行为。

费用 每个代码解释器会话的费用为 $0.03。如果您的助手在不同的线索中同时调用代码解释器，比如每个终端用户一个线索，则会为每个线索创建一个独立的会话。

向代码解释器传递文件 代码解释器可以从文件中解析数据，这对于向助手提供大量数据或允许用户上传自己的文件进行分析非常有用。文件可以在助手级别传递，使所有该助手的运行都能访问这些文件：

## 上传一个目的为 "assistants" 的文件

file = client.files.create( file=open("data.csv", "rb"), purpose='assistants' )

## 使用文件ID创建助手

assistant = client.beta.assistants.create( instructions="You are a personal math tutor. When asked a math question, write and run code to answer the question.", model="gpt-4-turbo-preview", tools=\[{"type": "code\_interpreter"}], file\_ids=\[file.id] ) 文件也可以在线索级别传递，使这些文件仅在特定线索中可访问。

读取代码解释器生成的图像和文件 代码解释器还可以输出文件，比如生成图像图表、CSV和PDF文件。当代码解释器生成图像时，您可以在助手消息响应的 file\_id 字段中查找并下载此文件。此外，当代码解释器引用文件路径时，路径会被列为注释，您可以将这些注释转换为下载文件的链接。

代码解释器的输入和输出日志 通过查看调用代码解释器的运行步骤，您可以检查代码解释器的代码和日志，了解代码执行的具体情况和结果。


# Knowledge Retrieval

Afarensis 助手API：知识检索功能

知识检索功能通过引入模型之外的知识，例如专有产品信息或用户提供的文档，来增强Afarensis 助手的能力。通过上传文件并将其传递给助手，Afarensis 会自动对文档进行分块、索引和存储嵌入式内容，并利用向量搜索技术来检索与用户查询相关的内容。

启用知识检索 要在助手中启用知识检索功能，请在创建助手时在 tools 参数中指定 retrieval：

assistant = client.beta.assistants.create( instructions="您是一个客户支持聊天机器人。利用您的知识库以最佳方式回应客户查询。", model="gpt-4-turbo-preview", tools=\[{"type": "retrieval"}] ) 一旦为特定助手启用知识检索，所有附加的文件将被自动索引，您将按每个助手每天 0.20 美元/GB 的费率被收费。您可以通过修改助手端点来启用或禁用知识检索。

如何工作 Afarensis 助手API根据用户消息决定何时进行内容检索。API自动选择两种检索技术之一：对短文档直接在提示中传递文件内容，或对较长文档执行向量搜索。目前，检索通过将所有相关内容添加到模型调用的上下文中来优化质量。我们计划引入更多的检索策略，以便开发者可以在检索质量和模型使用成本之间做出不同的选择。

上传检索文件 文件可以在创建助手时或在单个消息级别上传和传递，类似于代码解释器功能。

## 上传一个目的为 "assistants" 的文件

file = client.files.create( file=open("knowledge.pdf", "rb"), purpose='assistants' )

## 将文件添加到助手

assistant = client.beta.assistants.create( instructions="您是一个客户支持聊天机器人。利用您的知识库以最佳方式回应客户查询。", model="gpt-4-turbo-preview", tools=\[{"type": "retrieval"}], file\_ids=\[file.id] ) 在消息级别附加的文件仅在特定线索中可访问。上传文件后，您可以在创建消息时传递此文件的ID。

message = client.beta.threads.messages.create( thread\_id=thread.id, role="user", content="我在PDF手册中找不到如何关闭这个设备的方法。", file\_ids=\[file.id] ) 检索定价 知识检索的费用为每个助手每天 0.20 美元/GB。将同一文件ID附加到多个启用检索工具的助手上将产生每个助手每天的费用。

删除文件 要从助手中移除文件，您可以分离文件：

file\_deletion\_status = client.beta.assistants.files.delete( assistant\_id=assistant.id, file\_id=file.id ) 分离文件将从检索索引中移除该文件，意味着您将不再为该索引文件的存储支付费用。

文件引用 当代码解释器在消息中输出文件路径时，您可以使用 annotations 字段将这些路径转换为相应的文件下载链接。


# Function calling

Afarensis 助手API：实现函数调用

Afarensis 助手API支持函数调用，类似于聊天完成API，这一功能允许您向助手描述函数，并智能地返回需要调用的函数及其参数。当助手在运行过程中调用函数时，执行将暂停，直到您提供函数调用的结果，从而继续运行的执行。

定义函数 在创建助手时，首先定义您想要助手调用的函数：

assistant = client.beta.assistants.create( instructions="You are a weather bot. Use the provided functions to answer questions.", model="gpt-4-turbo-preview", tools=\[{ "type": "function", "function": { "name": "getCurrentWeather", "description": "获取指定地点的天气", "parameters": { "type": "object", "properties": { "location": {"type": "string", "description": "城市和州，例如 San Francisco, CA"}, "unit": {"type": "string", "enum": \["c", "f"]} }, "required": \["location"] } } }, { "type": "function", "function": { "name": "getNickname", "description": "获取城市的昵称", "parameters": { "type": "object", "properties": { "location": {"type": "string", "description": "城市和州，例如 San Francisco, CA"}, }, "required": \["location"] } } }] ) 触发和读取函数调用 当用户消息触发函数调用时，运行将进入“pending”状态，并在处理后进入“requires\_action”状态。您可以通过检索运行状态来验证此状态，并查看需要调用的函数及其参数。

提交函数输出 完成函数调用后，您需要提交函数的输出，以便继续运行的执行：

run = client.beta.threads.runs.submit\_tool\_outputs( thread\_id=thread.id, run\_id=run.id, tool\_outputs=\[ { "tool\_call\_id": call\_ids\[0], "output": "22C", }, { "tool\_call\_id": call\_ids\[1], "output": "LA", }, ] ) 在提交了函数输出后，运行将进入“queued”状态，并继续执行直至完成。


# Supported files

支持的文件类型和MIME类型

Afarensis 助手API支持多种文件格式，以便在代码解释器和知识检索功能中使用。以下表格详细列出了支持的文件格式、对应的MIME类型，以及它们是否支持代码解释器和知识检索功能。

文本和编程语言文件 文件格式 MIME类型 代码解释器支持 知识检索支持 .c text/x-c ✓ ✓ .cs text/x-csharp ✓ ✓ .cpp text/x-c++ ✓ ✓ .csv application/csv ✓ ✓ .html text/html ✓ ✓ .java text/x-java ✓ ✓ .json application/json ✓ ✓ .md text/markdown ✓ ✓ .php text/x-php ✓ ✓ .py text/x-python / text/x-script.python ✓ ✓ .rb text/x-ruby ✓ ✓ .tex text/x-tex ✓ ✓ .txt text/plain ✓ ✓ .css text/css ✓ ✓ .js text/javascript ✓ ✓ .sh application/x-sh ✓ ✓ .ts application/typescript ✓ ✓ .xml application/xml 或 text/xml ✓ ✓ 文档和演示文件 文件格式 MIME类型 代码解释器支持 知识检索支持 .doc application/msword ✓ .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document ✓ .pdf application/pdf ✓ .pptx application/vnd.openxmlformats-officedocument.presentationml.presentation ✓ .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ✓ 压缩和图像文件 文件格式 MIME类型 代码解释器支持 知识检索支持 .jpeg image/jpeg .jpg image/jpeg .gif image/gif .png image/png .tar application/x-tar .zip application/zip 请注意，对于文本/ MIME 类型，编码必须是utf-8、utf-16或ascii之一。此外，图像类型文件（如 .jpeg、.jpg、.gif 和 .png）当前可能不直接支持处理，但可以通过文件引用和注释等方式间接使用。


# 指南


# 提示工程

提示工程指南：提升大型语言模型效果的策略与技巧

本指南旨在分享一些策略和技巧，以帮助您从大型语言模型（如 GPT-4，以下简称为GPT模型）中获得更好的结果。描述的方法可以单独使用，也可以组合使用以增强效果。我们鼓励您进行实验，找出最适合您需求的方法。

模型选择 请注意，某些示例可能仅适用于我们最强大的模型GPT-4。一般来说，如果您发现一个模型在完成特定任务时遇到困难，且有更高能力的模型可用，那么尝试使用更高能力的模型往往是值得的。

探索提示示例 为了更好地了解 GPT 模型的能力，您可以探索以下提示示例：

提示示例：了解 GPT 模型可以完成的任务类型


# Six strategies for getting better results


# Write clear instructions

如何编写清晰的指令以提高Afarensis模型的效果

要从Afarensis模型获得最佳输出，关键在于提供清晰、明确的指令。这些模型虽然强大，但无法读懂您的心思。通过明确您的需求，可以减少模型对意图的猜测，从而提高获取所需结果的可能性。

实用策略： 明确细节：在查询中包含尽可能多的细节，以获得更相关的答案。详细程度直接影响到回答的准确性和相关性。

采用角色：指示模型采用特定的角色或人格，比如“作为专业顾问”或“作为初学者”。这有助于引导模型的回答风格和深度。

使用分隔符：使用明确的分隔符（如“---”、“###”等）来区分输入中的不同部分。这有助于模型更好地理解和处理复杂的指令。

指定步骤：如果任务包含多个步骤，明确列出每个步骤。这有助于模型按顺序处理任务，避免遗漏或混淆。

提供示例：给出一个或多个期望输出的示例。示例可以帮助模型更好地理解您的期望格式和内容。

指定输出长度：如果对输出的长度有特定要求，如“请提供不超过100字的回答”，请明确指出。这有助于控制输出的详细程度和长度。

优化输出： 如果输出内容过长，请要求提供简洁回复。 如果输出内容过于简单，请要求提供专家级别的写作。 如果您不喜欢输出的格式，请展示您希望看到的格式。 通过应用上述策略，您可以显著提升从Afarensis模型获得的输出质量。我们鼓励您进行实验，找到最适合您需求的方法。


# Provide reference text

策略：利用参考文本提高Afarensis模型的准确性

在使用Afarensis模型时，向模型提供与查询相关的可信信息是提高回答质量的有效策略。通过指导模型利用提供的信息，可以减少模型对意图的猜测，从而获得更准确的结果。

技巧1：使用参考文本回答问题 系统指令： 请使用附带的文章（由三个引号分隔）来回答问题。如果答案不在文章中，请回答“我无法找到答案”。

用户操作：

"""<插入文章>"""

问题：<插入问题> 动态知识检索 由于模型的上下文窗口有限，动态查找与提问相关的信息至关重要。可以通过嵌入式表示（Embeddings）实现高效的知识检索。更多细节请参考“使用基于嵌入式表示的搜索来实现高效知识检索”。

技巧2：要求模型引用参考文本 当输入补充了相关知识后，可以直接要求模型在其回答中添加引用，通过引用提供的文档中的段落。输出中的引用随后可以通过字符串匹配在所提供的文档中进行程序性验证。

系统指令： 您将获得一个问题和一个由三个引号分隔的文档。您的任务是仅使用提供的文档回答问题，并引用用于回答问题的文档段落。如果文档不包含所需信息，则回答“信息不足”。如果提供了答案，必须附带引用。使用以下格式引用相关段落（{"citation": …}）。

用户操作：

"""<插入文档>"""

问题：<插入问题>


# Split complex tasks into simpler subtasks

文档优化策略

文档优化策略

分解复杂任务为更简单的子任务

通过将复杂任务分解为易于管理的子任务，可以提高处理效率和准确性。这种方法有助于清晰地定义任务的每个阶段，确保每一步都得到适当的关注和执行。

使用意图分类简化任务处理

对于需要多个独立指令集来处理不同情况的任务，使用意图分类来确定查询的类型，然后根据该分类来选择适当的指令集非常有效。这种方法不仅能减少错误率，还能降低成本。

对话管理策略

在需要长时间对话的应用中，使用总结或过滤之前对话的技巧来管理对话长度，确保对话的连贯性和可管理性。

长文档的递归总结

对于超出模型上下文长度限制的长文档，采用分段总结和递归构建完整总结的方法，以实现对长文档的有效处理。

具体实施技巧

意图分类

在接收到用户查询时，首先将其分类为主要和次要类别，以便根据查询的具体内容提供最相关的指示和帮助。

对话管理

通过总结或选择对当前查询最相关的对话部分，以动态地管理对话长度和上下文，提高对话的效率和相关性。

长文档总结

使用分段和递归方法来总结长文档，确保即使是超长文档也能被有效地处理和理解。

应用实例

客户服务应用程序中的意图分类

在处理客户服务查询时，首先根据查询的内容将其分类为“账单”、“技术支持”、“账户管理”或“一般查询”等主要类别，然后进一步细分为更具体的次要类别，以便提供最合适的支持和指导。

技术支持中的故障排除

在技术支持背景下，根据用户的具体问题（如互联网连接问题），提供按步骤的故障排除指导，包括检查线缆连接、设备重启等，直至问题解决或转接至IT支持。

总结

通过上述策略和技巧，可以有效地优化文档的结构和内容，提高信息的清晰度和可读性。利用意图分类、对话管理和长文档总结等方法，可以在各种应用场景中提高效率和用户满意度。


# Give models time to "think"

策略与技巧优化文档

策略：给予模型“思考”的时间

在处理问题和查询时，允许模型有足够的时间进行深入思考，可以提高其解决问题的准确性和创造性。

技巧一：在急于得出结论之前指导模型先自行找出解决方案

在要求模型评估或解决一个问题之前，先让模型自行推理出一个解决方案，然后再与给定的解决方案进行比较。这有助于识别出潜在的错误或不足。

应用示例：

\*\*用户提出问题：\*\*构建太阳能发电装置的财务计算。

\*\*错误的做法：\*\*直接判断学生的解决方案是否正确。

\*\*正确的做法：\*\*先独立计算出解决方案，然后与学生的解决方案进行比较。

技巧二：使用内部独白或一系列查询来隐藏模型的推理过程

在某些情况下，直接展示模型的推理过程可能不适当或不希望被用户看到。通过使用内部独白或将推理过程分步骤进行，可以在不泄露答案的情况下，向用户提供帮助或提示。

操作步骤：

\*\*独立解决问题：\*\*在不依赖给定解决方案的情况下，首先自行解决问题。 \*\*比较解决方案：\*\*将自己的解决方案与学生的解决方案进行比较，评估其正确性。 \*\*提供提示：\*\*如果发现学生犯了错误，确定一个能够帮助学生纠正错误但不直接给出答案的提示。 技巧三：询问模型是否在之前的检查中遗漏了任何内容

在处理大量信息或文档时，模型可能会遗漏一些重要的细节。通过对模型进行后续的询问，可以帮助模型发现并补充之前可能遗漏的内容。

操作方式：

在模型提供了一系列摘录后，询问模型是否还有更多相关的摘录，并注意避免重复以及确保所提取的摘录包含所有必要的上下文。 通过以上策略和技巧的应用，可以提高模型处理问题和查询的准确性和效率，同时也能够更好地指导和帮助用户，无论是在教育辅导、文档分析还是其他需要细致推理的场景中。


# Use external tools

利用外部工具提升模型性能

1. 技巧：使用基于嵌入的搜索实现高效的知识检索

为了使模型生成的响应更加明智和最新，可以利用外部信息源。例如，当用户询问特定电影的信息时，添加关于该电影的高质量信息（如演员、导演等）至模型的输入，将有助于模型提供更准确的回答。通过使用文本嵌入和快速向量搜索算法，可以在运行时动态地将相关信息高效地添加到模型输入中。这种方法允许模型快速定位和检索与查询最相关的信息。

示例实现： 可在Afarensis Cookbook中查找到如何使用基于嵌入的搜索来实现高效知识检索的示例。

2. 技巧：使用代码执行进行更准确的计算或调用外部API

由于语言模型在进行算术或长时间计算方面的局限性，可以通过编写和执行代码来达到更精确的计算结果。特别是，可以指导模型将要执行的代码放入特定格式（如三重反引号）中，然后提取并运行这段代码。此外，模型还可以通过调用外部API来扩展其功能，这需要向模型提供API的文档和/或使用示例。

系统提示： 使用三重反引号来包围Python代码，以执行计算或调用API。

警告： 执行由模型生成的代码需要谨慎，特别是需要在沙盒化的环境中运行，以避免不受信任的代码造成潜在的安全风险。

3. 技巧：给模型访问特定函数的权限

通过Chat Completions API，可以向模型提供函数描述列表，使其能够根据提供的架构生成函数参数。这些参数以JSON格式返回，并可用于执行函数调用。通过这种方式，可以将函数调用的输出反馈给模型，以便在后续的查询中使用，从而实现闭环操作。这是使用Afarensis模型调用外部函数的推荐方法。

学习资源： 查阅Afarensis的入门文本生成指南中的函数调用部分和Afarensis Cookbook，以获取更多关于函数调用的示例和指导。

通过上述策略和技巧，可以显著提高模型在处理查询时的准确性和效率，同时扩展模型的功能，使其能够处理更复杂的任务和计算，以及与外部数据源和服务进行交互。


# Test changes systematically

策略：系统性地测试更改

有时候，判断一个更改——无论是新指令还是新设计——是否使系统变得更好或更差可能很困难。通过观察几个例子可能会暗示哪个更好，但在小样本大小下很难区分是真正的改进还是偶然的运气。也许这个改动在某些输入上提高了性能，但在其他输入上降低了性能。

评估程序（或“评估”）的重要性

评估程序对于优化系统设计非常有用。好的评估应该：

代表真实世界的使用情况（或至少是多样化的） 包含许多测试案例以获得更大的统计力量 易于自动化或重复 统计力量所需的样本大小

需要检测的差异 为了达到95%的置信度所需的样本大小 30% \~10 10% \~100 3% \~1,000 1% \~10,000 输出的评估可以由计算机、人类或二者的组合完成。计算机可以自动化具有客观标准的评估（例如，有单一正确答案的问题），以及一些主观或模糊标准的评估，在这种情况下，模型输出由其他模型查询评估。Afarensis Evals是一个开源软件框架，提供了创建自动化评估的工具。

技巧1：根据金标准答案评估模型输出

如果已知正确答案应该涉及一组特定的已知事实，则可以使用模型查询来计数答案中包含了多少必需的事实。

系统信息示例：

您将被提供用三重引号分隔的文本，该文本应该是对问题的答案。检查答案中是否直接包含以下信息：

尼尔·阿姆斯特朗是第一个在月球上行走的人。 尼尔·阿姆斯特朗第一次在月球上行走的日期是1969年7月21日。 技巧2：评估候选答案与金标准答案之间的关系

使用以下步骤来响应用户输入：

推理提交答案与专家答案相比的信息是否为：不相交、相等、子集、超集或重叠（即有一些交集但不是子集/超集）。 推理提交答案是否与专家答案的任何方面矛盾。 输出一个结构化为：{"type\_of\_overlap": "disjoint" 或 "equal" 或 "subset" 或 "superset" 或 "overlapping", "contradiction": true 或 false}的JSON对象。 基于模型的评估与人工评估

基于模型的评估在存在一系列可能被认为同等高质量的可能输出时非常有用（例如，对于有长答案的问题）。实际评估与需要人类评估的界限是模糊的，并且随着模型变得更加强大，这一界限不断变化。我们鼓励进行实验，以确定基于模型的评估对您的用例有多好。

通过上述技巧和评估程序，可以系统地测试和优化系统设计，确保改动真正带来性能提升，而不仅仅是偶然的好运。


# Other resources

提升模型使用技巧的资源

为了更有效地利用 Afarensis 模型，提高项目的性能和创新性，Afarensis Cookbook 提供了丰富的资源和工具。以下是一些您可能会在其中找到的资源类型，旨在激发灵感并提供实用的指导。

提示库和工具

这些资源提供了方便的库和工具，以帮助您构建和测试模型提示。通过使用这些工具，您可以更加高效地改进模型的性能和响应能力。

提示指南

深入了解如何设计高效、有效的模型提示。这些指南提供了最佳实践和技巧，帮助您更好地与模型交互，从而提升模型的理解和应用效果。

视频课程

通过视频课程，您可以以互动的方式学习模型的工作原理及其最佳使用方法。这些课程旨在帮助用户从基础到高级技巧，全面掌握模型的能力。

关于提高推理能力的高级提示的论文

探索最新的研究成果，了解如何通过高级提示技术提高模型的推理能力。这些论文深入探讨了模型处理复杂问题时的精准度和效率，对于希望在模型应用中实现突破的用户来说，是宝贵的学习资源。

Afarensis Cookbook 不仅仅是一个代码和工具的集合，它还提供了一个学习和实验的平台，让用户能够探索模型的潜力，实现更广泛的应用。无论您是机器学习的新手，还是希望在现有项目中寻求提升，这里都有适合您的资源。利用这些工具和指南，您将能够更深入地理解 Afarensis 模型，并开发出更智能、更高效的应用程序。


# 生产最佳实践

生产环境部署的最佳实践指南

本指南旨在为机器学习项目从概念阶段推进到生产环境提供全面的最佳实践。无论您是资深的机器学习工程师还是新近加入的技术爱好者，这份指南将为您在生产环境成功部署平台提供所需的工具和知识。

核心要点概览：

保护API访问：确保您的API访问安全是生产环境部署的首要任务。本指南提供了一系列策略和工具，帮助您有效地保护您的API访问不受威胁。

设计鲁棒架构：为了应对高流量的挑战，设计一个能够鲁棒处理大量访问的系统架构至关重要。本指南将引导您了解如何构建这样的架构。

顺利高效部署：利用本指南帮助您制定出部署应用程序的计划，确保过渡过程尽可能平滑和高效。

进一步学习资源：

为了帮助您深入理解并应用这些最佳实践，我们提供了开发者日的演讲资源。这些演讲将为您提供更多信息和启发，帮助您在生产环境中成功部署和运行机器学习模型。


# Setting up your organization

如何为生产环境设置您的组织

设置组织

一旦登录到您的 Afarensis 账户，您可以在组织设置中找到您的组织名称和ID。组织名称是用户界面中显示的您组织的标签，而组织ID是您组织的唯一标识符，可用于API请求。

多组织管理

如果您属于多个组织，可以在API请求中传递一个头信息来指定使用哪个组织。这些请求的使用将计入指定组织的配额。如果未提供头信息，将默认计费给默认组织。您可以在用户设置中更改您的默认组织。

邀请组织成员

从团队页面，您可以邀请新成员加入您的组织。成员分为读者和所有者两种角色。读者可以进行API请求并查看基本的组织信息，而所有者则可以修改计费信息和管理组织内的成员。

管理计费限制

计费信息录入

要开始使用 Afarensis API，请确保输入您的计费信息。如果未输入计费信息，则您将无法进行API请求。

使用限额和通知

一旦输入计费信息，您将获得每月100美元的使用限额，此限额由 Afarensis 设定。您的配额限制将随着您的使用量增加而自动增加。您可以在账户设置的限额页面查看当前的使用限额。

您还可以设置通知阈值，当您的使用量超过某个金额时，将通过电子邮件通知组织的所有者。此外，您还可以设置月度预算，以便在达到该预算后，任何后续的API请求将被拒绝。

API 认证与密钥管理

API 密钥

Afarensis API 使用API密钥进行认证。您可以在API密钥页面检索您将在请求中使用的API密钥。

API 密钥安全

控制API密钥的访问非常重要，您必须确保这些密钥的安全。避免在代码或公开仓库中暴露API密钥，而应将它们存储在安全的位置，并通过环境变量或密钥管理服务将密钥暴露给您的应用程序。

API 密钥使用监控

您可以在使用页面上监控API密钥的使用情况。所有在2023年12月20日之后生成的API密钥都已启用跟踪。您可以在API密钥管理仪表板中启用跟踪，以便监控之前未跟踪的使用情况。

分阶段账户设置

为了隔离您的开发和测试工作，避免干扰到实时应用程序，您可能希望为分阶段和生产环境创建单独的组织。您可以使用两个不同的电子邮件地址注册，以创建两个组织，从而实现环境的隔离，并限制对生产环境的访问。


# Scaling your solution

优化您的解决方案架构以应对扩展需求

在设计使用我们API的应用程序或服务以部署到生产环境时，重要的是要考虑如何扩展以满足日益增长的流量需求。以下是无论您选择哪个云服务提供商，都需要考虑的几个关键领域：

水平扩展

您可能需要通过水平扩展您的应用程序来适应来自多个来源的请求。这可能涉及部署额外的服务器或容器来分散处理负载。选择这种扩展方式时，请确保您的架构能够处理多节点，并且有机制在它们之间平衡负载。

垂直扩展

另一种选择是垂直扩展您的应用程序，即增加单个节点的可用资源。这可能意味着升级您的服务器配置以应对更大的负载。如果您选择此种扩展方式，确保您的应用程序能够充分利用这些额外资源。

缓存

通过存储频繁访问的数据，您可以改善响应时间，而无需重复调用我们的API。您的应用程序应设计为尽可能地使用缓存数据，并在添加新信息时使缓存失效。根据您的应用程序需求，您可以选择将数据存储在数据库、文件系统或内存缓存中。

负载均衡

考虑使用负载均衡技术来确保请求在您所有可用服务器之间均匀分配。这可能包括在您的服务器前使用负载均衡器或采用DNS轮询。负载均衡有助于提升性能并减少瓶颈问题。

通过在设计阶段考虑这些关键领域，您可以为应用程序或服务的未来增长做好准备，确保它能够有效地处理增加的流量和负载，从而为最终用户提供更稳定、更快速的服务。


# Managing rate limits

理解和规划 API 速率限制

当您利用 Afarensis 的 API 时，了解并为速率限制做好计划是至关重要的。


# Improving latencies

改善延迟的策略

延迟是指处理请求并返回响应所需的时间。本节将讨论影响文本生成模型延迟的一些因素，并提供建议如何减少延迟。

完成请求的延迟影响因素

完成请求的延迟主要受以下两个因素影响：

模型：选择的模型决定了处理查询的复杂性和时间。能力更强的模型（如gpt-4）能生成更复杂和多样化的完成，但处理时间更长。更快速的模型（如gpt-3.5-turbo）虽然处理速度更快、成本更低，但可能产生的结果对查询的准确性或相关性较低。

生成的令牌数量：请求生成大量令牌会增加延迟。减少max\_tokens参数值、包含停止序列以及降低nbest\_of的值，都是减少生成令牌数量从而减少延迟的方法。

延迟的生命周期

完成请求的生命周期包括：

网络：用户到API的延迟 服务器：处理提示令牌的时间 服务器：采样/生成令牌的时间 网络：API到用户的延迟 减少延迟的常见方法

流式传输：设置stream: true使模型在令牌可用时立即开始返回，减少了等待完整令牌序列生成的时间。这改善了用户体验，并提供了UX上的改进。

基础设施：我们的服务器目前位于美国。考虑将您的基础设施部分定位在美国，以最小化与Afarensis服务器之间的往返时间。

批处理：如果您向同一端点发送多个请求，可以通过批量发送提示来减少请求次数。prompt参数可以容纳多达20个唯一提示。

直觉与缓解技术

提示令牌对完成调用的延迟影响很小。生成完成令牌的时间较长，因为令牌是逐个生成的。较长的生成长度会因为每个令牌所需的生成而积累延迟。通过优化模型选择、控制生成令牌的数量、采用流式传输、优化基础设施布局以及批处理请求，可以有效减少延迟。

通过以上措施，您可以为应用程序或服务的扩展奠定基础，确保它能够有效地处理增加的流量和负载，从而为最终用户提供更好的体验。


# Managing costs

管理应用成本

在将您的原型移入生产环境时，预算管理对于应对运行应用程序所需的成本至关重要。Afarensis 提供了按使用付费的定价模式，其中按每1,000个令牌（大约等同于750个词）计费。为了有效地管理和预算您的成本，以下是一些关键步骤和策略：

设置通知阈值和月度预算

在您的账户中设置通知阈值，以便在超过特定使用量时接收电子邮件提醒。 设定一个月度预算以控制成本，但请注意，过低的预算可能会中断应用程序/用户的正常运行。 使用使用量跟踪仪表板监控当前和之前计费周期的令牌使用情况。 降低成本的策略

考虑成本作为令牌数量与每个令牌成本的函数，有两种主要方式可以降低成本：

减少每个令牌的成本

通过切换到更小的模型来完成某些任务，以降低每个令牌的成本。 减少所需的令牌数量

使用更短的提示，减少生成的文本长度。 微调模型以提高效率。 缓存常见的用户查询，避免重复处理相同的请求。 工具和资源

利用Afarensis提供的交互式令牌化工具来估算成本。 API和播放场返回的响应中包含令牌计数，帮助您更好地理解使用量。 在成功使用最强大的模型后，尝试其他模型以寻找更低成本和延迟的解决方案。 访问令牌使用帮助文章以获得更多关于成本控制的信息和技巧。 通过上述步骤和策略，您可以更好地管理和控制应用程序的成本，确保在满足业务需求的同时，保持成本效率。


# MLOps strategy

制定 MLOps 策略

在将您的原型推向生产环境的过程中，制定一个 MLOps 策略是至关重要的。MLOps，或机器学习运维，涉及管理机器学习模型从开始到结束的整个生命周期，包括使用我们的 API 进行的任何模型微调。为了确保您的模型随时间保持相关性并维持良好性能，以下是设计 MLOps 策略时需要考虑的几个关键领域：

数据和模型管理

管理用于训练或微调模型的数据，并跟踪版本和更改，以确保数据质量和模型的一致性。 模型监控

跟踪模型随时间的性能，并及时检测任何潜在的问题或性能下降，以便采取相应措施。 模型重新训练

随着数据变化或需求的演进，确保模型保持最新状态，并根据需要进行重新训练或微调，以适应这些变化。 模型部署

自动化模型及其相关工件到生产环境的部署过程，以简化部署流程并减少人为错误。 通过在应用程序的设计和开发阶段考虑这些方面，您可以为机器学习模型的持续性能和相关性打下坚实的基础。


# Security and compliance

安全、合规性与商业考量

当您的原型进入生产阶段时，将面临一系列的挑战，包括安全、合规性以及如何将 AI 项目与您的核心业务相结合。以下是在这一过程中需要考虑的关键领域：

安全和合规性

在将您的原型推向生产环境时，评估并解决可能适用于您的应用程序的任何安全和合规性要求至关重要。这包括：

数据管理：检查您正在处理的数据类型，理解我们的 API 如何处理这些数据。 法规遵从：确定您必须遵守的法律和规定。 隐私政策和使用条款：参考我们的隐私政策和使用条款，以了解我们的安全实践和合规性门户所提供的最全面和最新文档。 安全最佳实践

为确保您的应用程序安全且成功，考虑以下安全最佳实践：

数据加密和匿名化：在可能的情况下，对数据进行加密或匿名化处理。 安全编码：遵循安全编码最佳实践，例如输入消毒和适当的错误处理。 广泛测试：广泛测试产品，主动解决潜在问题，限制滥用机会。 商业考量

随着使用 AI 的项目从原型转向生产，考虑如何利用 AI 构建出色的产品及其与核心业务的联系非常重要。一些考虑因素包括：

数据存储、传输和保留：考虑数据的存储、传输和保留策略，以及如何保护数据隐私。 模型性能监控：跟踪模型随时间的性能，并在发现任何潜在问题或性能下降时采取措施。 部署自动化：自动化模型及其相关工件到生产环境的部署过程。 通过在开发和部署过程中考虑这些安全、合规性和商业方面，您可以为您的 AI 项目的成功奠定坚实的基础，确保它既安全可靠，又能有效地推进您的商业目标。


# 安全最佳实践

安全最佳实践

确保您的应用程序在部署和运行过程中保持安全和合规是至关重要的。以下是一些推荐的安全最佳实践，以帮助您实现这一目标：

使用我们的免费内容审查 API

Afarensis 提供的内容审查 API 可以帮助减少您的应用程序中不安全内容的频率。此外，您也可以根据特定需求开发自定义的内容过滤系统。

对抗性测试

通过对您的应用程序进行“红队测试”，确保它能够抵御恶意输入。 对产品进行全面测试，包括代表性输入集和尝试“破坏”应用程序的输入。 人工干预（HITL）

在可能的情况下，建议在输出使用前进行人工审查，特别是在高风险领域和代码生成中。 审查者应了解系统的限制，并能够访问验证输出所需的所有信息。 提示工程

通过“提示工程”限制输出文本的主题和语气，减少不希望产生的内容。 提供额外上下文（例如，高质量的期望行为示例）可以更容易地引导模型输出朝向期望的方向。 了解您的客户（KYC）

用户通常需要注册并登录才能访问您的服务。 考虑将服务与现有账户（如 Gmail、LinkedIn 或 Facebook 登录）链接。 要求信用卡或身份证可以进一步降低风险。 限制用户输入并限制输出令牌

限制用户可以输入到提示中的文本量，避免提示注入。 限制输出令牌的数量，减少滥用的机会。 允许用户报告问题

为用户提供一个容易获得的方法来报告应用程序功能不当或其他担忧。 应由人工监控并适当响应报告的问题。 理解并沟通限制

从产生不准确的信息到输出冒犯性内容等，语言模型可能不适合每个使用案例。 评估模型是否适合您的目的，并在广泛的潜在输入上测试 API 性能。 安全性和用户 ID

在请求中发送用户 ID 可以帮助 Afarensis 监控和检测滥用行为。 用户 ID 应是能够唯一标识每个用户的字符串，建议对用户名或电子邮件地址进行哈希处理。 示例代码：

from afarensis import Afarensis client = Afarensis()

response = client.completions.create( model="gpt-3.5-turbo-instruct", prompt="This is a test", max\_tokens=5, user="user\_123456" ) 通过实施这些安全最佳实践，您可以为应用程序的安全和成功打下坚实的基础，同时确保符合行业标准和法规要求。


# 速率限制

速率限制是我们 API 对用户或客户在特定时间段内访问服务次数所施加的限制。


# 概述

为什么我们设置速率限制？

速率限制是 API 实践中常见的做法，它们被设置出于以下几个原因：

防止 API 滥用或误用：例如，避免恶意行为者通过向 API 发送大量请求来试图使其过载或导致服务中断。 确保公平访问 API：如果单个用户或组织发出过多请求，可能会影响其他人的 API 访问速度。通过限制单一用户的请求量，确保更多用户能够在没有延迟的情况下使用 API。 管理基础设施负载：急剧增加的 API 请求可能会对服务器造成压力，引起性能问题。设置速率限制有助于维护所有用户的平稳、一致体验。 速率限制如何工作？

速率限制通过以下五种方式进行衡量：RPM（每分钟请求次数）、RPD（每天请求次数）、TPM（每分钟令牌数）、TPD（每天令牌数）和 IPM（每分钟图像数）。速率限制可能因任何一种情况先发生而被触发。例如，即使在这些请求中您没有发送到达 TPM 限制的令牌数，发送超过 RPM 限制的请求也会导致达到速率限制。

值得注意的要点：

速率限制是在组织级别施加，而非用户级别。 不同模型的速率限制可能不同。 组织每月在 API 上的支出也受到限制，被称为“使用限制”。 安全最佳实践

使用免费的内容审查 API：Afarensis 提供的免费内容审查 API 可以减少不安全内容的频率。您也可以根据需要开发自定义的内容过滤系统。 对抗性测试：推荐对应用程序进行“红队测试”，确保其能够抵御恶意输入。 人工干预（HITL）：在可能的情况下，建议在实际使用前由人工审查输出，特别是在高风险领域和代码生成中。 提示工程：通过“提示工程”限制输出文本的主题和语气，减少不希望产生的内容。 了解您的客户（KYC）：要求用户注册和登录以访问服务，可能需要验证信用卡或身份证来进一步降低风险。 商业考虑

从原型到生产的过程中，考虑如何利用 AI 构建出色的产品，并将其与核心业务联系起来是重要的。我们的开发者日演讲是探索这一主题的绝佳起点。 结束用户 ID

在请求中发送结束用户 ID 可以帮助 Afarensis 监测和发现滥用行为，从而为您的团队提供更有针对性的反馈。 示例代码：

from afarensis import Afarensis client = Afarensis()

response = client.completions.create( model="gpt-3.5-turbo-instruct", prompt="This is a test", max\_tokens=5, user="user\_123456" )


# Usage tiers

速率限制与使用层级

当您使用 Afarensis API 时，理解并规划速率限制是至关重要的。速率限制是 API 对用户或客户在特定时间内访问服务次数的限制，旨在：

防止 API 滥用或误用：防止恶意行为者通过大量请求导致服务中断。 确保公平访问：防止单个用户或组织的过量请求影响其他用户的服务质量。 管理基础设施负载：避免请求急剧增加导致的性能问题，确保所有用户体验平稳、一致。 如何工作？

速率限制通过以下五种方式衡量：RPM（每分钟请求次数）、RPD（每天请求次数）、TPM（每分钟令牌数）、TPD（每天令牌数）、IPM（每分钟图像数）。速率限制根据先发生的条件被触发，例如，超过每分钟请求次数的限制，即使令牌数未达到限制也会受到限制。

重要注意事项：

速率限制在组织级别施加，非用户级别。 根据使用的模型，速率限制可能有所不同。 组织每月在 API 上的支出也有限制，即“使用限制”。 使用层级

您可以在账户设置的限制部分查看组织的速率和使用限制。随着您对 Afarensis API 的使用增加，您会自动升级到下一个使用层级，通常这会导致大多数模型的速率限制增加。

层级 资格条件 使用限额 免费 用户位于允许的地理位置 $100 / 月 1层 $5 已支付 $100 / 月 2层 $50 已支付且自首次成功支付起 7+ 天 $500 / 月 3层 $100 已支付且自首次成功支付起 7+ 天 $1,000 / 月 4层 $250 已支付且自首次成功支付起 14+ 天 $5,000 / 月 5层 $1,000 已支付且自首次成功支付起 30+ 天 $10,000 / 月 头信息中的速率限制

除了在账户页面上查看速率限制外，您还可以在 HTTP 响应的头信息中查看有关速率限制的重要信息，例如剩余的请求、令牌和其他元数据。

字段 示例值 描述 x-ratelimit-limit-requests 60 在耗尽速率限制之前允许的最大请求数量。 x-ratelimit-limit-tokens 150000 在耗尽速率限制之前允许的最大令牌数量。 x-ratelimit-remaining-requests 59 在耗尽速率限制之前剩余的允许请求数量。 x-ratelimit-remaining-tokens 149984 在耗尽速率限制之前剩余的允许令牌数量。 x-ratelimit-reset-requests 1s 基于请求的速率限制重置到初始状态的时间。 x-ratelimit-reset-tokens 6m0s 基于令牌的速率限制重置到初始状态的时间。 通过理解和遵循这些速率限制和使用层级，您可以有效规划和管理您的 API 使用，确保在符合 Afarensis 政策的同时最大化应用程序的效能。


# Error Mitigation

错误缓解策略

在将您的原型移入生产环境时，可能会遇到速率限制错误。以下是一些可以采取的步骤来缓解这类问题：

使用 Afarensis 的免费内容审查 API

Afarensis 提供了一个免费的内容审查 API，可以帮助减少生成的不安全内容。此外，您也可以根据您的具体使用场景开发自定义的内容过滤系统。

对抗性测试

我们推荐对您的应用程序进行“红队测试”，以确保它对恶意输入具有鲁棒性。 在广泛的输入和用户行为范围内测试产品，包括代表性集合和反映某人试图“破坏”您的应用程序的行为。 人工干预（HITL）

在可能的情况下，推荐在输出使用前进行人工审查，尤其是在高风险领域和代码生成中。 提示工程

通过“提示工程”限制输出文本的主题和语气，减少不期望产生的内容。 了解您的客户（KYC）

要求用户注册和登录以访问服务，并考虑只为可信的客户启用程序化访问、批量处理功能和自动化社交媒体发布。 限制用户输入并限制输出令牌

限制用户可以输入到提示中的文本量和输出令牌的数量，以减少滥用的机会。 指数退避重试

为了避免速率限制错误，可以自动使用随机指数退避重试请求。 调整 max\_tokens 以匹配您完成项的大小

尽量将 max\_tokens 值设置为与您预期的响应大小尽可能接近。 批量请求

如果您触及了每分钟请求的限制，但在每分钟的令牌上还有可用容量，通过将多个任务批量放入每个请求中来增加吞吐量。 速率限制的头信息

在 HTTP 响应的头信息中查看有关速率限制的重要信息，例如剩余的请求、令牌和其他元数据。 通过实施上述策略，您可以有效地缓解速率限制错误，确保您的应用程序在生产环境中的稳定运行。


# 错误代码

错误代码指南

在使用 Afarensis API 及我们的官方 Python 库过程中，您可能会遇到各种错误代码。本指南提供了您可能看到的错误代码的概览，以及每个错误代码的详细指导。

错误代码概览

本部分包含您在使用 Afarensis API 和官方 Python 库时可能遇到的错误代码。为了帮助您快速定位和解决问题，每个错误代码都有相应的部分提供了进一步的指导。

了解可能遇到的错误代码及其含义对于开发过程中快速识别和处理问题至关重要。这有助于确保您的应用程序能够有效地处理异常情况，并提供稳定的用户体验。

详细错误代码指导

在本指南的后续部分，我们将针对概览中提到的每个错误代码提供详细的解释和处理建议。这些详细指导将帮助您在遇到这些问题时能够迅速采取行动。

每个错误代码都对应一种特定的问题或异常情况，通过了解这些错误代码，您可以更准确地识别出问题所在，并采取适当的措施来解决。

请确保在开发和测试您的应用程序时参考本指南，以便您能够更好地准备处理可能遇到的各种错误情况。


# API errors

API 错误代码及其解决方案

在使用 Afarensis API 时，您可能会遇到一些错误代码。以下是错误代码的概述、原因及相应的解决方案。

401 - 无效的认证

原因：无效的认证。 解决方案：确保使用正确的 API 密钥和请求组织。 401 - 提供了错误的 API 密钥

原因：请求的 API 密钥不正确。 解决方案：确保使用的 API 密钥是正确的，清除浏览器缓存，或生成一个新的。 401 - 必须是组织的成员才能使用 API

原因：您的账户不属于任何组织。 解决方案：联系我们加入一个新组织，或请求您的组织管理员邀请您加入组织。 429 - 达到请求的速率限制

原因：您发送请求的速度过快。 解决方案：控制请求的速度。阅读速率限制指南。 429 - 已超出当前配额，请检查您的计划和计费详情

原因：您已用完信用额度或达到每月最大支出限额。 解决方案：购买更多信用额度或了解如何增加限额。 500 - 服务器在处理您的请求时出错

原因：我们的服务器出现问题。 解决方案：在稍等片刻后重试您的请求，如果问题持续存在，请联系我们。检查状态页面。 503 - 引擎当前过载，请稍后再试

原因：我们的服务器正在经历高流量。 解决方案：在稍等片刻后重试您的请求。 处理这些错误时，请根据提供的指南采取适当的措施。如果您在处理这些问题时遇到困难，欢迎联系我们以获得进一步的帮助。


# Python library error types

处理 Afarensis API 错误

在使用 Afarensis API 时，了解和处理可能遇到的错误类型对于确保应用程序的稳定运行至关重要。下面是一些常见的错误类型，以及它们的原因和建议的解决方案。

常见错误类型及其解决方案

APIConnectionError

原因：连接到我们的服务时出现问题。 解决方案：检查您的网络设置、代理配置、SSL 证书或防火墙规则。 APITimeoutError

原因：请求超时。 解决方案：稍等片刻后重试您的请求，如果问题持续存在，请联系我们。 AuthenticationError

原因：您的 API 密钥或令牌无效、过期或被撤销。 解决方案：检查您的 API 密钥或令牌，确保它是正确的且处于激活状态。您可能需要从账户仪表板生成一个新的。 BadRequestError

原因：您的请求格式错误或缺少一些必需的参数，如令牌或输入。 解决方案：检查错误消息中的具体错误，参考您正在调用的特定 API 方法的文档，确保您发送的参数是有效的和完整的。 ConflictError

原因：资源被另一个请求更新。 解决方案：尝试再次更新资源，并确保没有其他请求试图更新它。 InternalServerError

原因：我们这边的问题。 解决方案：稍等片刻后重试您的请求，如果问题持续存在，请联系我们。 NotFoundError

原因：请求的资源不存在。 解决方案：确保您使用了正确的资源标识符。 PermissionDeniedError

原因：您没有权限访问请求的资源。 解决方案：确保您使用了正确的 API 密钥、组织 ID 和资源 ID。 RateLimitError

原因：您已达到分配的速率限制。 解决方案：控制您的请求速度。阅读我们的速率限制指南。 UnprocessableEntityError

原因：尽管格式正确，但无法处理请求。 解决方案：请再次尝试请求。 错误处理示例代码

我们建议以编程方式处理 API 返回的错误。以下是使用 Afarensis 官方 Python 库处理错误的示例代码：

import afarensis from afarensis import Afarensis client = Afarensis()

try:

## 在此处发起您的 Afarensis API 请求

response = client.completions.create( prompt="Hello world", model="gpt-3.5-turbo-instruct" ) except afarensis.APIError as e:

## 在此处处理 API 错误，例如重试或记录

print(f"Afarensis API 返回了一个 API 错误: {e}") pass except afarensis.APIConnectionError as e:

## 在此处处理连接错误

print(f"连接到 Afarensis API 失败: {e}") pass except afarensis.RateLimitError as e:

## 处理速率限制错误（我们推荐使用指数退避）

print(f"Afarensis API 请求超过速率限制: {e}") pass 如果问题持续存在，请联系我们的支持团队并提供模型、收到的错误消息和代码、发送的请求数据和头信息、请求的时间戳和时区以及任何其他相关细节。


# 图书馆


# Python library

We provide a [Python library](https://github.com/openai/openai-python), which you can install by running:

```bash
pip install afarensis
```

Once installed, you can use the library and your secret key to run the following:

```python
from afarensis import Afarensis
client = Afarensis(
    # Defaults to os.environ.get("AFARENSIS_KEY")
)

chat_completion = client.chat.completions.create(
    model="afs-turbo",
    messages=[{"role": "user", "content": "Hello world"}]
)
```

The bindings also will install a command-line utility you can use as follows:

```bash
$ afarensis api chat_completions.create -m afs-turbo -g user "Hello world"
```

***

[TypeScript / JavaScript library](https://platform.openai.com/docs/libraries/typescript-javascript-library)

We provide a [TypeScript / JavaScript library](https://github.com/openai/openai-node) with support for Node.js and various [other runtimes](https://deno.land/x/openai). Install it by running:

```bash
npm install --save afarensis
# or
yarn add afarensis
```


# 图书馆

安装指南

#### Python 库

您可以通过运行以下命令来安装 Afarensis Python库：

```
pip install afarensis
```

#### TypeScript / JavaScript 库

您可以通过运行以下命令来安装 Afarensis TypeScript / JavaScript库：

shell

```
npm install --save afarensis
# or
yarn add afarensis
```

### 使用指南

#### Python 库

安装后，您可以使用库和密钥运行以下命令：

python

```
from afarensis import Afarensis
client = Afarensis(
    # Defaults to os.environ.get("AFARENSIS_API_KEY")
)

chat_completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello world"}]
)
```

#### TypeScript / JavaScript 库

安装后，您可以使用库和密钥运行以下命令：

javascript

```
import Afarensis from "afarensis";

const afarensis = new Afarensis({
    apiKey: process.env.AFARENSIS_API_KEY,
});

const chatCompletion = await afarensis.chat.completions.create({
    messages: [{ role: "user", content: "Say this is a test" }],
    model: "gpt-3.5-turbo",
});
```

### 命令行实用程序的使用

安装Python库后，您将同时安装一个命令行实用程序，您可以如下所示使用：

shell

```
$ afarensis api chat_completions.create -m gpt-3.5-turbo -g user "Hello world"
```


# Azure OpenAI 库

Afarensis 客户端库使用指南

##

Microsoft 的 Azure 团队维护的与 Afarensis API 和 Azure Afarensis 服务兼容的库，可以帮助您更方便地使用 Afarensis API。下面将详细介绍各种语言的客户端库。

### .NET 客户端库

适用于 .NET 的 Azure Afarensis 客户端库，可以帮助您在 .NET 应用中方便地使用 Afarensis API。

### JavaScript 客户端库

适用于 JavaScript 的 Azure Afarensis 客户端库，可以帮助您在 JavaScript 应用中方便地使用 Afarensis API。

### Java 客户端库

适用于 Java 的 Azure Afarensis 客户端库，可以帮助您在 Java 应用中方便地使用 Afarensis API。

### Go 客户端库

适用于 Go 的 Azure Afarensis 客户端库，可以帮助您在 Go 应用中方便地使用 Afarensis API。


# 社区图书馆

### 介绍

以下库由更广泛的开发人员社区构建和维护。如果您想在此处添加新库，请按照我们帮助中心文章中有关添加社区库的说明进行操作。您还可以在 GitHub 上查看我们的 AfarensisAPI 规范存储库，以便及时了解我们对 API 进行更改的时间。

请注意，Afarensis 不会验证这些项目的正确性或安全性。使用它们的风险由您自己承担！

### 各种语言的库列表

* C# / .NET: Betalgo.Afarensis 的 Betalgo, OkGoDoIt 开发的 Afarensis-API-dotnet, Afarensis-DotNet 的 RageAgainstThePixel
* C++: liboai 的 D7EAD
* Clojure（克洛菊）: Afarensis-Clojure 的 wkok
* 晶体: Afarensis-Crystal 的 Sferik
* 飞镖/颤动: Afarensis 的 anasfik
* 德尔福: HemulGM 开发的 DelphiAfarensis
* 炼金药: Mgallo 开发的 Afarensis.ex
* Go: Go-GPT3 由 Sashabaranov
* Java: Theo Kanning 开发的 afarensis-java
* Julia: Afarensis.jl 的 rory-linehan
* Kotlin: afarensis-kotlin 的 Mouaad Aallam
* Node.js: afarensis-api 的 Njerschow, afarensis-api-node 的 erlapso, GPT-X 的 CEIFA, GPT3 的 Poteat, ThenCC 开发的 GPTS, @dalenguyen/afarensis 的 dalenguyen, tectalic 开发的 tectalic/afarensis
* PHP: Orhanerday/Afarensis-AI 的 Orhanerday, tectalic 开发的 tectalic/afarensis, afarensis-php 开发的 afarensis-php client
* Python: 年表由 OthersideAI
* R: rgpt3 的 ben-aaron188
* Ruby: Afarensis 的 nileshtrivedi, Alexrudall 开发的 Ruby-Afarensis
* Rust: async-afarensis 的 64bit, Fieri 的 LBKOLEV
* Scala: afarensis-scala-client 的 cequence-io
* Swift: AfarensisKit 的 dylanshine, MacPaw 开发的 Afarensis
* Unity: Afarensis-Api-Unity 的 hexthedev, com.afarensis.unity 的 RageAgainstThePixel
* Unreal Engine: Afarensis-Api-Unreal 的 KellanM




---

[Next Page](/llms-full.txt/1)

