Skip to content

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] 响应格式,支持 textjson_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] 工具选择,支持 autonone 和自定义。 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结构调用。

主要通过以下两个参数实现:

  1. response_format。参考OpenAI官方文档:API | Structured Outputs
  2. tools-function-strict。参考OpenAI官方文档:API