Langchain-Chatchat/markdown_docs/server/llm_api.md

12 KiB
Raw Blame History

FunctionDef list_running_models(controller_address, placeholder)

list_running_models: 此函数的功能是从fastchat controller获取已加载模型列表及其配置项。

参数:

  • controller_address: 字符串类型Fastchat controller服务器地址。如果未提供则会尝试从fschat_controller_address()函数获取默认地址。
  • placeholder: 字符串类型,该参数未使用,仅作为占位符。

代码描述: list_running_models函数首先检查controller_address参数是否提供,如果未提供,则调用fschat_controller_address()函数获取Fastchat控制器的默认地址。随后函数使用get_httpx_client()函数创建一个HTTP客户端实例并向controller_address指定的地址发送POST请求请求路径为/list_models。请求成功后,从响应中解析出模型列表,并对每个模型调用get_model_config()函数获取其配置项,最后将模型及其配置项以字典形式包装在BaseResponse对象中返回。

在异常处理方面,如果在执行过程中遇到任何异常,函数会记录错误信息,并返回一个code为500的BaseResponse对象,同时在msg字段中提供错误详情。

注意:

  • 确保提供的controller_address是有效的Fastchat控制器地址否则无法成功获取模型列表。
  • 该函数依赖于get_httpx_client()get_model_config()函数,确保这些依赖函数能够正常工作。
  • 函数使用POST请求与Fastchat控制器通信确保控制器支持/list_models路径的处理。
  • 在处理异常时,函数会记录详细的错误信息,有助于调试和问题定位。

输出示例:

{
    "code": 200,
    "msg": "success",
    "data": {
        "model1": {
            "model_version": "1.0",
            "language": "English",
            // 其他配置项
        },
        "model2": {
            "model_version": "2.0",
            "language": "Chinese",
            // 其他配置项
        }
        // 更多模型及其配置项
    }
}

此示例展示了函数调用成功时可能返回的响应格式,其中data字段包含了每个模型及其配置项的详细信息,而codemsg字段表示请求处理成功。

FunctionDef list_config_models(types, placeholder)

list_config_models: 此函数的功能是从本地获取configs中配置的模型列表。

参数:

  • types: 类型为List[str],默认值为["local", "online"]。此参数用于指定需要获取的模型配置项类别,例如localonlineworker等。
  • placeholder: 类型为str,默认值为None。此参数为占位用调用时无实际效果主要用于API设计的扩展性。

代码描述: list_config_models函数首先定义了一个空字典data,用于存储最终的模型配置信息。函数通过调用list_config_llm_models函数获取所有配置的大型语言模型LLM的不同类型。然后函数遍历这些模型类型如果模型类型存在于types参数中,则通过调用get_model_config函数获取每个模型的详细配置信息,并将这些信息添加到data字典中。最后,函数返回一个BaseResponse对象,其中data字段包含了根据types参数筛选后的模型配置信息。

注意:

  • 在使用此函数时,需要确保types参数中包含的模型类型已经在系统中正确配置,否则可能无法获取到预期的配置信息。
  • 此函数通过BaseResponse对象返回数据确保了API响应的一致性和标准化。调用方可以通过检查BaseResponse对象中的codemsg字段来判断请求处理的状态和结果。

输出示例:

{
    "code": 200,
    "msg": "success",
    "data": {
        "local": {
            "model1": {
                "config1": "value1",
                "config2": "value2"
            },
            "model2": {
                "config1": "value1",
                "config2": "value2"
            }
        },
        "online": {
            "model3": {
                "config1": "value1",
                "config2": "value2"
            },
            "model4": {
                "config1": "value1",
                "config2": "value2"
            }
        }
    }
}

此输出示例展示了函数调用成功时可能返回的响应格式,其中data字段包含了根据types参数筛选后的模型配置信息,而codemsg字段表示请求处理成功。

FunctionDef get_model_config(model_name, placeholder)

get_model_config: 此函数的功能是获取LLM模型的配置项合并后的

参数:

  • model_name: 字符串类型通过Body传入描述为"配置中LLM模型的名称",用于指定需要获取配置的模型名称。
  • placeholder: 字符串类型通过Body传入描述为"占位用,无实际效果"此参数在函数内部没有被使用仅作为API设计时的占位符。

代码描述: get_model_config函数首先定义了一个空字典config,用于存储过滤后的模型配置项。函数通过调用get_model_worker_config函数,传入model_name参数,获取指定模型的工作配置项。然后,函数遍历这些配置项,通过一系列条件判断(排除包含"worker_class"、"key"、"secret"或以"id"结尾的键),过滤掉敏感信息或不需要公开的配置项,并将剩余的配置项添加到config字典中。

最后,函数返回一个BaseResponse对象,其中data字段包含了过滤后的模型配置项。这样调用方可以通过标准的API响应格式获取到所需的模型配置信息。

注意:

  • 在使用此函数时,需要确保传入的model_name参数正确,且对应的模型配置已经在系统中正确配置,否则可能无法获取到预期的配置信息。
  • 此函数通过过滤敏感信息来保护模型配置的安全性,因此返回的配置项中不会包含可能泄露模型内部实现细节的信息。
  • 返回的BaseResponse对象中的codemsg字段可以用于判断请求处理的状态和结果,确保调用方可以正确处理响应数据。

输出示例:

{
    "code": 200,
    "msg": "success",
    "data": {
        "model_version": "1.0",
        "language": "English",
        // 其他非敏感配置项
    }
}

此示例展示了函数调用成功时可能返回的响应格式,其中data字段包含了过滤后的模型配置项,而codemsg字段表示请求处理成功。

FunctionDef stop_llm_model(model_name, controller_address)

stop_llm_model: 此函数的功能是向fastchat controller请求停止某个LLM模型。

参数:

  • model_name: 要停止的LLM模型的名称此参数是必需的。
  • controller_address: Fastchat controller服务器的地址此参数是可选的。如果未提供则会使用fschat_controller_address函数获取默认地址。

代码描述: stop_llm_model函数主要用于停止指定的LLM模型。首先如果没有提供controller_address参数,函数会调用fschat_controller_address来获取Fastchat控制器的地址。然后使用get_httpx_client函数获取一个httpx客户端实例通过这个客户端向Fastchat控制器发送POST请求请求的URL是由控制器地址和/release_worker路径组成,请求体中包含了要停止的模型名称。如果请求成功,函数将返回控制器的响应内容。在异常情况下,函数会记录错误信息并返回一个包含错误信息的BaseResponse对象。

注意:

  • 在调用此函数时,确保提供的模型名称是正确且当前正在运行的。如果模型名称错误或模型未运行,可能会导致停止操作失败。
  • 如果未能成功连接到Fastchat控制器或控制器处理请求失败函数会返回一个包含错误信息的BaseResponse对象,其中code为500表示服务器内部错误。
  • 由于Fastchat的实现方式停止LLM模型实际上是停止了模型所在的model_worker。

输出示例: 假设成功停止了名为"example_model"的LLM模型函数可能返回如下的BaseResponse对象:

{
    "code": 200,
    "msg": "success",
    "data": null
}

如果尝试停止一个不存在的模型或者与Fastchat控制器的通信失败返回的BaseResponse对象可能如下:

{
    "code": 500,
    "msg": "failed to stop LLM model example_model from controller: http://127.0.0.1:8080。错误信息是 ConnectionError",
    "data": null
}

FunctionDef change_llm_model(model_name, new_model_name, controller_address)

change_llm_model: 此函数的功能是向fastchat controller请求切换LLM模型。

参数:

  • model_name: 字符串类型,表示当前运行的模型名称。
  • new_model_name: 字符串类型,表示要切换到的新模型名称。
  • controller_address: 字符串类型表示Fastchat controller服务器的地址。如果未提供则会使用fschat_controller_address函数获取默认地址。

代码描述: change_llm_model函数首先检查controller_address参数是否提供,如果未提供,则调用fschat_controller_address函数获取Fastchat controller的地址。然后使用get_httpx_client函数获取一个httpx客户端实例用于发送HTTP POST请求到controller地址的/release_worker端点。请求的JSON体包含model_namenew_model_name字段,分别表示当前模型和要切换到的新模型。请求超时时间由HTTPX_DEFAULT_TIMEOUT常量定义。如果请求成功函数将返回controller的响应JSON。在遇到异常时函数会记录错误日志并返回一个包含错误信息的BaseResponse对象。

注意:

  • 确保controller_address正确指向Fastchat controller服务器否则请求将失败。
  • 使用此函数时,应确保model_namenew_model_name正确且对应的模型在服务器上可用。
  • 函数中使用了get_httpx_client来获取httpx客户端实例确保了代理设置和超时配置的正确应用同时也支持了异常处理和日志记录。

输出示例: 成功切换模型时,可能的返回值示例为:

{
  "code": 200,
  "msg": "Model switched successfully",
  "data": {
    "previous_model": "old_model_name",
    "current_model": "new_model_name"
  }
}

在遇到错误时,返回值示例为:

{
  "code": 500,
  "msg": "failed to switch LLM model from controller: http://127.0.0.1:8080。错误信息是ConnectionError"
}

FunctionDef list_search_engines

list_search_engines: 此函数的功能是列出服务器支持的搜索引擎。

参数: 此函数没有参数。

代码描述: list_search_engines 函数首先从 server.chat.search_engine_chat 模块导入 SEARCH_ENGINES 变量,该变量包含了服务器支持的所有搜索引擎的列表。然后,函数使用 BaseResponse 类构造一个响应对象,其中 data 字段被设置为 SEARCH_ENGINES 列表的内容。BaseResponse 类是一个标准化的 API 响应格式,包含 codemsgdata 三个字段,分别表示 API 的状态码、状态消息和返回的数据内容。在本函数中,只需关注 data 字段,它被用来存放搜索引擎列表。

注意:

  • list_search_engines 函数返回的是一个 BaseResponse 对象,因此在调用此函数时,应当处理这个对象,以获取其中的数据。
  • 由于 SEARCH_ENGINES 是从另一个模块导入的,确保该变量在导入前已正确定义和初始化。
  • 此函数没有接收任何参数,因此可以直接调用而无需提供额外的信息。

输出示例: 调用 list_search_engines 函数可能返回的示例响应如下:

{
    "code": 200,
    "msg": "success",
    "data": ["Google", "Bing", "DuckDuckGo"]
}

此示例中,codemsg 字段表示请求成功处理,而 data 字段包含了一个列表,列出了服务器支持的搜索引擎名称。