Back to Langchain Chatchat

Azure

markdown_docs/server/model_workers/azure.md

0.3.19.2 KB
Original Source

ClassDef AzureWorker

AzureWorker: AzureWorker类是用于与Azure云服务进行交互,特别是用于处理与Azure API相关的聊天和嵌入功能的工作流程。

属性:

  • controller_addr: 控制器地址,用于与模型控制器进行通信。
  • worker_addr: 工作器地址,用于标识工作器实例。
  • model_names: 模型名称列表,默认为["azure-api"]。
  • version: 模型版本,默认为"gpt-35-turbo"。

代码描述: AzureWorker类继承自ApiModelWorker类,提供了与Azure API交互的具体实现。在初始化时,它接受控制器地址、工作器地址、模型名称列表和版本等参数,并将这些参数传递给父类构造函数。此外,它还定义了do_chatget_embeddingsmake_conv_template等方法,用于执行与Azure API相关的操作。

  • do_chat方法接受ApiChatParams参数,用于执行聊天功能。它构造了一个请求数据包,包括消息、温度、最大令牌数等,并向Azure API发送请求。该方法通过生成器返回聊天响应,允许实时处理和返回聊天内容。
  • get_embeddings方法是一个示例方法,展示了如何打印嵌入信息。在实际应用中,该方法可以根据需要进行扩展,以实现具体的嵌入功能。
  • make_conv_template方法用于创建一个会话模板,该模板定义了用户和助手的角色、系统消息以及消息分隔符等。

注意:

  • 在使用AzureWorker类时,需要确保已经配置了正确的Azure API密钥和相关参数,以便能够成功调用Azure服务。
  • do_chat方法中使用了HTTP流,这要求在处理响应时必须正确管理连接和数据流。
  • 由于do_chat方法是异步的,调用该方法时需要注意异步编程模式,确保异步任务的正确管理和调度。

输出示例: 在调用do_chat方法时,可能的返回值示例为:

json
{
  "error_code": 0,
  "text": "这是由Azure API生成的回复文本。"
}

此示例展示了一个成功的API调用结果,其中error_code为0表示成功,text字段包含了由Azure API生成的回复文本。

FunctionDef init(self)

init: 初始化AzureWorker对象,并配置其基本属性。

参数

  • controller_addr: 字符串类型,控制器地址,默认为None。
  • worker_addr: 字符串类型,工作器地址,默认为None。
  • model_names: 字符串列表类型,模型名称,默认为["azure-api"]。
  • version: 字符串类型,模型版本,默认为"gpt-35-turbo"。
  • **kwargs: 接收任意数量的关键字参数。

代码描述: 此初始化函数用于创建一个AzureWorker对象,并对其进行基本配置。首先,通过关键字参数(**kwargs)更新模型名称(model_names)、控制器地址(controller_addr)和工作器地址(worker_addr)。这意味着,如果在创建AzureWorker对象时提供了这些参数,它们将被用于更新或设置对象的相应属性。

接下来,使用super().__init__(**kwargs)调用基类的初始化方法,允许AzureWorker继承并初始化基类中定义的任何属性或方法。这是面向对象编程中常见的做法,确保了类的继承体系能够正确地初始化和配置。

最后,将传入的version参数值赋给对象的version属性。这样,每个AzureWorker对象都会有自己的版本信息,用于标识或处理特定版本的模型。

注意

  • 在使用AzureWorker对象时,确保提供正确的controller_addrworker_addr,这对于确保对象能够正确地与控制器和工作器通信非常重要。
  • model_names参数允许自定义模型名称列表,这在处理多个模型时非常有用。默认情况下,它包含一个预设的模型名称"azure-api"。
  • version参数用于指定模型的版本,根据需要进行调整。默认值为"gpt-35-turbo",但根据实际使用的模型版本,这个值可能需要更改。
  • 通过**kwargs传递额外的参数时,应确保这些参数与基类的初始化方法兼容,以避免引发错误。

FunctionDef do_chat(self, params)

do_chat: 此函数的功能是向Azure的OpenAI服务发送聊天请求,并处理返回的聊天结果。

参数:

  • params: ApiChatParams类型,包含聊天请求所需的参数,如消息列表、温度参数、最大令牌数等。

代码描述: do_chat函数首先调用params.load_config方法,加载与Azure服务相关的配置,如模型名称。然后,构造一个包含聊天请求所需数据的字典,包括消息列表、温度参数、最大令牌数等。接着,函数构造请求的URL,使用params中的资源名称、部署名称和API版本号。请求头包括内容类型、接受类型和API密钥。

如果启用了详细日志记录,函数会记录URL、请求头和数据到日志中。之后,使用get_httpx_client函数获取一个httpx客户端实例,并发起POST请求到Azure的OpenAI服务。函数通过迭代响应中的行来处理返回的数据,如果行包含有效的聊天内容,则将其累加到文本变量中,并以生成器的形式返回包含错误码和累加文本的字典。如果在响应中检测到错误,函数会记录错误信息到日志。

此函数与get_httpx_client函数关联,后者提供了执行HTTP请求所需的httpx客户端实例。此外,do_chat函数依赖于ApiChatParams类来获取聊天请求的参数,以及load_config方法来加载特定工作器的配置。

注意:

  • 确保在调用do_chat函数之前,已经正确设置了ApiChatParams中的参数,包括API密钥、资源名称、部署名称等,这些参数对于成功调用Azure的OpenAI服务至关重要。
  • 函数使用生成器返回聊天结果,调用方需要迭代返回的生成器来获取所有聊天内容。
  • 如果遇到请求错误或服务端错误,函数会将错误信息记录到日志中,调用方应当注意检查日志以便及时发现并处理问题。
  • 函数中使用了stream=True选项进行HTTP请求,这意味着响应内容将作为流进行处理,有助于处理大量数据或实时数据。

FunctionDef get_embeddings(self, params)

get_embeddings: 此函数的功能是打印嵌入信息和参数。

参数:

  • params: 此参数用于接收传入的参数信息。

代码描述: get_embeddings函数是AzureWorker类的一个方法,主要用于展示如何处理和打印嵌入信息及其相关参数。当调用此函数时,它首先打印出字符串"embedding",随后打印出传入的params参数。这表明该函数可能用于测试或演示如何在控制台上输出信息,尤其是与嵌入向量相关的参数信息。

具体来说,该函数接受一个名为params的参数,这个参数可以是任何类型的数据结构,如字典、列表或其他,这取决于调用函数时的具体需求。函数内部没有对params进行任何形式的处理或操作,仅仅是将其内容直接打印出来。

注意:

  • 在实际应用中,get_embeddings函数可能需要进一步开发以实现特定的功能,如从Azure服务获取嵌入向量等。
  • 该函数目前的实现主要用于演示或测试目的,因此在生产环境中使用时需要根据实际需求进行相应的修改和扩展。
  • 在调用此函数时,需要确保传入的params参数包含了所有必要的信息,以便函数能够正确地执行其预期的打印操作。

FunctionDef make_conv_template(self, conv_template, model_path)

make_conv_template: 此函数的功能是创建一个对话模板。

参数:

  • conv_template: 字符串类型,指定对话模板,此参数在当前实现中未使用。
  • model_path: 字符串类型,指定模型路径,此参数在当前实现中未使用。

代码描述: make_conv_template 函数用于创建一个对话模板实例。它通过调用 conv.Conversation 类来实现,生成的对话模板包含以下几个关键属性:

  • name: 对话的名称,此处使用 self.model_names[0] 作为对话名称,即取模型名称列表的第一个元素。
  • system_message: 系统消息,这里固定为 "You are a helpful, respectful and honest assistant.",表明助手的角色定位。
  • messages: 对话消息列表,初始为空列表。
  • roles: 对话中的角色列表,包含 "user" 和 "assistant" 两个角色。
  • sep: 消息分隔符,这里设定为 "\n### "。
  • stop_str: 对话终止字符串,设定为 "###"。

注意:

  • 虽然 conv_templatemodel_path 参数在函数定义中存在,但在当前的实现中并未被使用。这可能是为了未来的功能扩展预留的接口。
  • 函数返回的对话模板实例是基于 conv.Conversation 类创建的,确保在使用此函数之前已正确导入或定义了 conv.Conversation 类。

输出示例: 假设 self.model_names[0] 的值为 "ExampleModel",则函数的返回值可能如下所示:

Conversation(
    name="ExampleModel",
    system_message="You are a helpful, respectful and honest assistant.",
    messages=[],
    roles=["user", "assistant"],
    sep="\n### ",
    stop_str="###",
)

这个返回值展示了一个初始化状态的对话模板,其中包含了基本的对话属性设置。