OpenAI GPT API 参考¶
文档类型:API 参考文档 目标读者:需要详细了解 GPT 类所有参数和方法签名的开发者 用户指南:如需快速上手和最佳实践,请参阅 OpenAI 使用指南
概述¶
GPT 类封装了与 OpenAI GPT 系列对话模型的交互,支持同步和异步调用。通过配置多个参数,可以自定义对话模型的行为,包括生成长度、温度、频率惩罚、工具选择等。
配置参数介绍¶
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
name |
str |
使用的大语言模型的名称,需要全局唯一,比如 gpt-4-turbo-preview。 |
gpt-4-turbo-preview |
frequency_penalty |
Optional[Annotated[float, Ge(-2.0), Le(2.0)]] |
频率惩罚,取值在 -2.0 到 2.0 之间。正值会根据文本中已有的频率惩罚新的 token,降低模型重复原文的可能性。 | 0 |
logit_bias |
Optional[dict[str, Annotated[float, Ge(-100), Le(100)]]] |
修改指定令牌出现在完成项中的可能性。接受一个 JSON 对象,该对象将令牌(通过在分词器中的令牌 ID 指定)映射到一个相关的偏置值,范围是从 -100 到 100。 | inspect.Parameter.empty |
max_tokens |
Optional[int] |
生成结果的最大长度。 | inspect.Parameter.empty |
top_p |
Optional[float] |
核采样(nucleus sampling),模型只考虑组成顶部 p% 概率质量的 token 结果。 | 1 |
n |
int |
每个输入消息生成的聊天完成选项数量。 | 1 |
presence_penalty |
Optional[Annotated[float, Ge(-2.0), Le(2.0)]] |
存在惩罚,取值在 -2.0 到 2.0 之间。正值会根据文本中已有的频率惩罚新的 token,降低模型重复原文的可能性。 | 0 |
response_format |
Optional[ResponseFormatDict \| ResponseSimpleFormatDict] |
响应格式,支持 text 和 json_object。 |
inspect.Parameter.empty |
seed |
Optional[int] |
种子,用于确定性采样。 | None |
stop |
Optional[str \| list[str]] |
停止词列表,最多 4 个。 | inspect.Parameter.empty |
stream |
bool |
是否流式处理。 | False |
temperature |
Annotated[float, Ge(0), Le(2)] |
温度参数,用于控制生成结果的多样性,当值越大时,生成结果越随机;当值越小时,生成结果越集中和确定性。通常不要与 top_p 同时调整。 |
1 |
tool_choice |
Optional[Literal["auto", "none"] \| ToolChoiceDict] |
工具选择,支持 auto、none 和自定义。 |
inspect.Parameter.empty |
tool_params_strict |
Optional[bool] |
是否严格限制工具调用参数。 | inspect.Parameter.empty |
user |
Optional[str] |
用户在 OpenAI 会话中标记与追踪用户。 | inspect.Parameter.empty |
openai_api_key |
str |
OpenAI API Key 需要前往 OpenAI 官网或者其它渠道自行获取。 | os.environ.get("OPENAI_API_KEY", "") |
proxy_host |
Optional[str] |
代理地址,需要自行配置。 | None |
proxy_port |
Optional[int] |
代理端口,需要自行配置。 | None |
proxy_user |
Optional[str] |
代理用户名,需要自行配置。 | None |
proxy_pass |
Optional[str] |
代理密码,需要自行配置。 | None |
方法介绍¶
parse_model_name(model_name: str) -> tuple[str, datetime]¶
解析模型名称并提取模型类型和发布日期。
is_model_newer(old_model: str, new_model: str) -> bool¶
检查新模型是否比旧模型更新。
is_model_newer_or_equal(old_model: str, new_model: str) -> bool¶
检查新模型是否比旧模型更新或相等。
calculate_tokens(chat_completion: ChatCompletion, prompt: dict, model: str) -> CompletionUsage¶
计算聊天完成中的 token 数量。
construct_request_params(self, current_input: BaseMessage, conversation: Optional[list[BaseMessage]] = None, elements: Optional[list[DocElement]] = None, knowledge: Optional[str] = None, tools: Optional[list[BaseTool]] = None, intermediate_msgs: Optional[list[BaseMessage]] = None) -> dict¶
构造聊天请求参数。
construct_llm_result(self, chat_completion: ChatCompletion, params: dict) -> LLMResult¶
构造 LLM 结果。
merge_chat_completion_chunk(chunk_finally: ChatCompletionChunk, chunk: ChatCompletionChunk) -> None¶
将每一个 chunk 合并进入 chunk_finally 中。
complete(self, current_input: BaseMessage, conversation: Optional[list[BaseMessage]] = None, elements: Optional[list[DocElement]] = None, knowledge: Optional[str] = None, tools: Optional[list[BaseTool]] = None, intermediate_msgs: Optional[list[BaseMessage]] = None) -> LLMResult¶
生成聊天结果。
async_complete(self, current_input: BaseMessage, conversation: Optional[list[BaseMessage]] = None, elements: Optional[list[DocElement]] = None, knowledge: Optional[str] = None, tools: Optional[list[BaseTool]] = None, intermediate_msgs: Optional[list[BaseMessage]] = None) -> LLMResult¶
生成聊天结果(异步)。
lying_to_openai_engineer(messages: list[dict]) -> list[dict]¶
向 OpenAI 工程师撒谎。此方法用于对消息进行改造,使得 OpenAI 的工程接口无法检测到错误,从而可以继续调用。
重点能力介绍¶
OpenAI于2024年8月更新的GPT-4o模型。其可以实现100%准确率的Json结构调用。
主要通过以下两个参数实现:
- response_format。参考OpenAI官方文档:API | Structured Outputs
- tools-function-strict。参考OpenAI官方文档:API