LLM function call

简介

在大模型领域,尤其是在自然语言处理(NLP)和人工智能(AI)应用中,function call 是一种非常重要的技术手段。它主要用于让模型在生成或处理文本的过程中调用外部功能或执行特定任务,有以下应用场景:

  • 数据查询和处理

​ AI模型可以调用数据库查询函数,以获取所需的数据。例如,在客户服务应用中,模型可以调用函数从客户数据库中提取客户信息

  • 执行计算或分析

​ 在需要复杂计算或数据分析的场景中,模型可以调用外部的计算函数。例如,金融分析系统中,模型可以调用函数进行风险评估或收益预测。

  • 第三方API集成

​ 模型可以通过function call集成第三方API服务。例如,调用天气API获取当前天气信息,或者调用地图服务API获取地理位置信息。

  • 自动化工作流程

​ 模型可以调用各种自动化脚本或函数以完成特定任务,例如发送邮件、生成报告或触发警报。

实现流程

使用大模型的function call能力需要进行以下步骤:

  1. 函数定义:事先定义好可以调用的函数及其接口。这些函数通常定义在代码库中,并以API形式暴露给AI模型。
  2. 函数调用机制:模型生成特定的调用指令,这些指令被解析并触发相应的函数执行。指令通常包含函数名及所需的参数。
  3. 响应处理:函数执行完成后,将结果返回给模型,模型根据返回的结果进行后续的生成或决策。例如,获取到的数据库查询结果可以直接用于生成下一步的文本输出。

示例

以下是一个简单的示例,展示如何在AI对话系统中使用function call:

用户请求: “请告诉我今天的天气。”

模型响应:

  1. 解析用户意图,识别需要调用天气API。
  2. 生成function call指令,如get_weather(location="current location")
  3. 调用天气API获取天气信息。
  4. 将API返回的天气信息整合到回复中生成最终输出。

最终输出: “今天的天气是晴天,气温大约25摄氏度。”

OpenAI Tool call

目前OpenAI提供的接口建议使用的是tool call,接口文档:https://platform.openai.com/docs/api-reference/chat/create,使用示例:https://cookbook.openai.com/examples/how_to_call_functions_with_chat_models

  1. 用户询问问题

如果提供了多个functions,本轮想指定某个function,可以使用tool_choice参数,如:tool_choice: {"type": "function", "function": {"name": "gaode_weather"}},默认情况下传auto让模型根据用户的输入去决定是否要调用工具,如果本轮不需要模型调用工具则传none

curl http://localhost:80/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "system", "content": "Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous."},
      {"role": "user", "content": "今天深圳天气怎么样?"}
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "gaode_weather",
                "description": "A tool when you want to ask about the weather or weather-related question.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "city": {
                            "type": "string",
                            "description": "If you don't know you can extract the city name from the question or you can reply:Please tell me your city. You have to extract the Chinese city name from the question."
                        }
                    },
                    "required": [
                        "city"
                    ]
                }
            }
        }
    ],
    "tool_choice": "auto",
  }'
  1. 提取模型返回的内容

有的比较新的模型,可以一次性返回多个tool调用。不支持的旧模型则是按多轮调用,比如先调用日期工具,再调用天气工具

返回内容:

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1699896916,
  "model": "gpt-3.5-turbo-0125",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_Dn2RJJSxzDm49vlVTehseJ0k",
            "type": "function",
            "function": {
              "name": "gaode_weather",
              "arguments": "{\n\"city\": \"深圳\"\n}"
            }
          }
        ]
      },
      "logprobs": null,
      "finish_reason": "tool_calls"
    }
  ],
  "usage": {
    "prompt_tokens": 82,
    "completion_tokens": 17,
    "total_tokens": 99
  }
}
  1. 调用高德天气API,获取返回结果,将工具的调用结果加入到请求的message参数中,并调用模型获取用户问题的结果。
curl http://localhost:80/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "system", "content": "Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous."},
      {"role": "user", "content": "今天深圳天气怎么样?"},
      {
        "role": "assistant",
        "tool_calls": [
          {
            "id": "call_Dn2RJJSxzDm49vlVTehseJ0k",
            "type": "function",
            "function": {
              "name": "gaode_weather",
              "arguments": "{\n\"city\": \"深圳\"\n}"
            }
          }
        ]
      },
      {
        "role": "tool",
		"tool_call_id": "call_Dn2RJJSxzDm49vlVTehseJ0k",
        "name": "gaode_weather",
        "content": "[{\"date\": \"2024-06-18\", \"week\": \"2\", \"dayweather\": \"阵雨\", \"daytemp_float\": \"32.0\", \"daywind\": \"北\", \"nightweather\": \"多云\", \"nighttemp_float\": \"27.0\"}, {\"date\": \"2024-06-19\", \"week\": \"3\", \"dayweather\": \"阵雨\", \"daytemp_float\": \"32.0\", \"daywind\": \"北\", \"nightweather\": \"多云\", \"nighttemp_float\": \"27.0\"}, {\"date\": \"2024-06-20\", \"week\": \"4\", \"dayweather\": \"阵雨\", \"daytemp_float\": \"32.0\", \"daywind\": \"南\", \"nightweather\": \"多云\", \"nighttemp_float\": \"28.0\"}, {\"date\": \"2024-06-21\", \"week\": \"5\", \"dayweather\": \"多云\", \"daytemp_float\": \"33.0\", \"daywind\": \"南\", \"nightweather\": \"多云\", \"nighttemp_float\": \"28.0\"}]"
      }
    ]
  }'
  1. 模型根据工具的调用结果回答用户问题
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "深圳未来几天的天气情况如下:\n\n2024年6月18日,星期六,天气为阵雨,白天温度为32.0摄氏度,北风,晚上多云,温度为27.0摄氏度;\n\n2024年6月19日,星期日,天气为阵雨,白天温度为32.0摄氏度,北风,晚上多云,温度为27.0摄氏度;\n\n2024年6月20日,星期一,天气为阵雨,白天温度为32.0摄氏度,南风,晚上多云,温度为28.0摄氏度;\n\n2024年6月21日,星期二,天气为多云,白天温度为33.0摄氏度,南风,晚上多云,温度为28.0摄氏度。\n\n请注意天气变化,合理安排行程。"
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

OpenAI Function call

目前function call已经被openAI标记成deprecated,建议用新的Tool call方式,但是目前很多项目用的还是function call的方案,未及时升级,细节参数可以参考文档:https://platform.openai.com/docs/api-reference/chat/create

  1. 用户询问问题

如果提供了多个functions,本轮想指定某个function,可以指定function_call参数,如:function_call: {"name": "gaode_weather"},则模型只负责解析该function需要的参数信息。

curl http://localhost:80/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "system", "content": "Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous."},
      {"role": "user", "content": "今天深圳天气怎么样?"}
    ],
    "functions": [
      {
        "name": "gaode_weather",
        "description": "A tool when you want to ask about the weather or weather-related question.",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "If you don't know you can extract the city name from the question or you can reply:Please tell me your city. You have to extract the Chinese city name from the question."
                }
            },
            "required": [
                "city"
            ]
        }
      }
    ]
  }'
  1. 提取模型返回的内容,调用工具获取结果

返回内容

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "function_call": {
	    "name": "gaode_weather",
		"arguments": "{\n  \"city\": \"深圳\"\n}"
	  }
    },
    "logprobs": null,
    "finish_reason": "function_call"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
  1. 调用高德天气API,获取返回结果,将工具的调用结果加入到请求的message参数中,并调用模型获取用户问题的结果。
curl http://localhost:80/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "system", "content": "Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous."},
      {"role": "user", "content": "今天深圳天气怎么样?"},
      {
        "role": "assistant",
        "function_call": {
	      "name": "gaode_weather",
		  "arguments": "{\n  \"city\": \"深圳\"\n}"
	    }
      },
      {
        "role": "function",
        "name": "gaode_weather",
        "content": "[{\"date\": \"2024-06-18\", \"week\": \"2\", \"dayweather\": \"阵雨\", \"daytemp_float\": \"32.0\", \"daywind\": \"北\", \"nightweather\": \"多云\", \"nighttemp_float\": \"27.0\"}, {\"date\": \"2024-06-19\", \"week\": \"3\", \"dayweather\": \"阵雨\", \"daytemp_float\": \"32.0\", \"daywind\": \"北\", \"nightweather\": \"多云\", \"nighttemp_float\": \"27.0\"}, {\"date\": \"2024-06-20\", \"week\": \"4\", \"dayweather\": \"阵雨\", \"daytemp_float\": \"32.0\", \"daywind\": \"南\", \"nightweather\": \"多云\", \"nighttemp_float\": \"28.0\"}, {\"date\": \"2024-06-21\", \"week\": \"5\", \"dayweather\": \"多云\", \"daytemp_float\": \"33.0\", \"daywind\": \"南\", \"nightweather\": \"多云\", \"nighttemp_float\": \"28.0\"}]"
      }
    ]
  }'
  1. 模型根据工具的调用结果回答用户问题
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "深圳未来几天的天气情况如下:\n\n2024年6月18日,星期六,天气为阵雨,白天温度为32.0摄氏度,北风,晚上多云,温度为27.0摄氏度;\n\n2024年6月19日,星期日,天气为阵雨,白天温度为32.0摄氏度,北风,晚上多云,温度为27.0摄氏度;\n\n2024年6月20日,星期一,天气为阵雨,白天温度为32.0摄氏度,南风,晚上多云,温度为28.0摄氏度;\n\n2024年6月21日,星期二,天气为多云,白天温度为33.0摄氏度,南风,晚上多云,温度为28.0摄氏度。\n\n请注意天气变化,合理安排行程。"
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

ReAct Prompting

更老的模型,并不具备工具调用的能力,为了实现工具调用,通常是通过ReAct(Reasoning and Acting)Prompting来实现的,它旨在通过将推理(Reasoning)和行动(Acting)相结合来增强大语言模型的能力。这种方法特别适用于需要复杂决策和多步骤处理的任务。

ReAct Prompting通过以下步骤对用户问题生成输出:

  1. 推理(Reasoning): 模型首先进行推理,理解用户的请求,并确定需要执行的操作。推理过程可以包括问题分解、步骤规划等。
  2. 行动(Acting):根据推理结果,调用外部工具或API,执行具体操作,如检索信息、执行计算、访问数据库等。
  3. 整合结果:模型将外部操作的结果整合到最终输出中,生成用户所需的响应。

通用步骤模板如下,每个模型可能适配的提示词不同,需要结合模型做相应的调整:

用户请求:请告诉我今天的天气。
模型推理:用户想知道今天的天气,需要调用天气API。
模型行动:调用get_weather(location="current location")。
整合结果:根据API返回的结果生成最终输出。

以下是基于Qwen模型使用ReAct Prompting的示例,细节可以参考:https://github.com/QwenLM/Qwen/blob/main/examples/react_prompt.md

  1. 将工具,用户问题格式化成prompt,注意需要将Observation:Observation:\n加入stop token,免得模型自问自答。
Answer the following questions as best you can. You have access to the following tools:

gaode_weather: Call this tool to interact with the gaode_weather API. What is the gaode_weather API useful for? A tool when you want to ask about the weather or weather-related question. Parameters: [{"name": "city", "description": "If you don't know you can extract the city name from the question or you can reply:Please tell me your city. You have to extract the Chinese city name from the question.", "required": true, "schema": {"type": "string"}}] Format the arguments as a JSON object.

Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [quark_search,image_gen]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can be repeated zero or more times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question

Begin!

Question: 深圳天气

模型返回:

Thought: 我应该用gaode_weather来查询深圳天气
Action: gaode_weather
Action Input: {"city": "深圳"}
  1. 调用工具获取结果,并让模型根据工具的结果继续作答

假设工具的返回内容为

[{"date": "2024-06-18", "week": "2", "dayweather": "阵雨", "daytemp_float": "32.0", "daywind": "北", "nightweather": "多云", "nighttemp_float": "27.0"}, {"date": "2024-06-19", "week": "3", "dayweather": "阵雨", "daytemp_float": "32.0", "daywind": "北", "nightweather": "多云", "nighttemp_float": "27.0"}, {"date": "2024-06-20", "week": "4", "dayweather": "阵雨", "daytemp_float": "32.0", "daywind": "南", "nightweather": "多云", "nighttemp_float": "28.0"}, {"date": "2024-06-21", "week": "5", "dayweather": "多云", "daytemp_float": "33.0", "daywind": "南", "nightweather": "多云", "nighttemp_float": "28.0"}]

接下来,将首次请求模型时的prompt和调用工具的结果拼装成如下prompt:

Answer the following questions as best you can. You have access to the following tools:

gaode_weather: Call this tool to interact with the gaode_weather API. What is the gaode_weather API useful for? A tool when you want to ask about the weather or weather-related question. Parameters: [{"name": "city", "description": "If you don't know you can extract the city name from the question or you can reply:Please tell me your city. You have to extract the Chinese city name from the question.", "required": true, "schema": {"type": "string"}}] Format the arguments as a JSON object.

Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [quark_search,image_gen]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can be repeated zero or more times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question

Begin!

Question: 深圳天气
Thought: 我应该用gaode_weather来查询深圳天气
Action: gaode_weather
Action Input: {"city": "深圳"}
Observation: [{"date": "2024-06-18", "week": "2", "dayweather": "阵雨", "daytemp_float": "32.0", "daywind": "北", "nightweather": "多云", "nighttemp_float": "27.0"}, {"date": "2024-06-19", "week": "3", "dayweather": "阵雨", "daytemp_float": "32.0", "daywind": "北", "nightweather": "多云", "nighttemp_float": "27.0"}, {"date": "2024-06-20", "week": "4", "dayweather": "阵雨", "daytemp_float": "32.0", "daywind": "南", "nightweather": "多云", "nighttemp_float": "28.0"}, {"date": "2024-06-21", "week": "5", "dayweather": "多云", "daytemp_float": "33.0", "daywind": "南", "nightweather": "多云", "nighttemp_float": "28.0"}]

用新的prompt去调用模型,模型将返回以下结果:

Thought: 我已经成功使用gaode_weather查询到了深圳天气。
Final Answer: 深圳未来几天的天气情况如下:\n\n2024年6月18日,星期六,天气为阵雨,白天温度为32.0摄氏度,北风,晚上多云,温度为27.0摄氏度;\n\n2024年6月19日,星期日,天气为阵雨,白天温度为32.0摄氏度,北风,晚上多云,温度为27.0摄氏度;\n\n2024年6月20日,星期一,天气为阵雨,白天温度为32.0摄氏度,南风,晚上多云,温度为28.0摄氏度;\n\n2024年6月21日,星期二,天气为多云,白天温度为33.0摄氏度,南风,晚上多云,温度为28.0摄氏度。\n\n请注意天气变化,合理安排行程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/746281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

时延降低 50%,小红书图数据库如何实现多跳查询性能大幅提升

多跳查询为企业提供了深入的数据洞察和分析能力,它在小红书众多在线业务中扮演重要的角色。然而,这类查询往往很难满足稳定的 P99 时延要求。小红书基础架构存储团队针对这一挑战,基于大规模并行处理(MPP)的理念&#…

【已解决】Pycharm:卡顿解决方案汇总

可能原因: 1、内存少 2、加载慢 3、文件多 4、硬件老 解决方案: 本机测试在 MAC,Windows、Linux也有相应的设置,请自行查询。 一、调整Pycharm使用内存 Help - Change Memory Settings 二、取消勾选 重复打开上次项目 Pych…

什么是Arkose Labs挑战及其解决方法

Arkose Labs挑战是一种复杂的机制,旨在验证用户是真正的人类,而不是自动化的机器人或脚本。这一挑战在维护在线服务的安全性和完整性方面发挥着关键作用,通过防止欺诈活动并确保只有真实用户才能访问某些功能。 目录 什么是Arkose Labs挑战&a…

地理空间数据格式GeoJSON扫盲,在CesiumJS中如何加载。

Hi,我是贝格前端工场,GIS已经越来越多的应用在可视化大屏中了,开发GIS类应用就少不了地理空间数据,本文介绍一下数据GeoJSON数据格式。 一、什么是GeoJSON数据格式,在GIS开发中有什么作用 GeoJSON是一种基于JSON&…

T100M2S2 M.2高清2路SDI采集卡

产品简介: 同三维T100M2S2一款支持全高清1080P 60HZ高清M2型两路SDI采集卡,板卡采用了高速的M.2-PCI-E接口,可实现1080P全实时不丢帧60帧传输。支持高清SDI输入,满足各种用户的需求,其最高分辨率可以实现1920&time…

文生视频模型Sora刷屏的背后的数据支持

前言:近日,OpenAI的首个文生视频模型Sora横空出世,引发了一波Sora热潮。与其相关的概念股连续多日涨停,多家媒体持续跟踪报道,央视也针对Sora进行了报道,称这是第一个真正意义上的视频生成大模型。 01 …

Java医院绩效考核系统源码:考核目标、考核指标、考核方法、考核结果与奖惩措施

Java医院绩效考核系统源码:考核目标、考核指标、考核方法、考核结果与奖惩措施 随着我国医疗体制的改革广大人民群的看病难,看病贵的问题一直没有得到有效地解决医疗费用的上涨,远远大于大多数家庭收入的增长速度。医院的改革已经势在必行&am…

早餐店小程序开发

在快节奏的城市生活中,早餐对于许多人来说是一天中最重要的一餐。然而,传统的早餐店在经营过程中常常面临客流量不稳定、服务效率低下等问题。为了解决这些问题,越来越多的早餐店老板开始寻求利用科技手段提升经营效率。早餐店小程序作为一种…

项目验收测试有必要找第三方软件测试机构吗?

在当今信息技术飞速发展的时代,软件测试成为了确保软件质量的重要环节。而在项目的验收测试中,很多企业都面临一个问题,那就是是否有必要找第三方软件测试机构进行验收测试?今天,我们就来探讨一下这个问题。 第三方软件测试机构…

python中的nan是什么意思

NaN(not a number),在数学表示上表示一个无法表示的数,这里一般还会有另一个表述inf,inf和nan的不同在于,inf是一个超过浮点表示范围的浮点数(其本质仍然是一个数,只是他无穷大&…

如何制作自己的网站

制作自己的网站可以帮助个人或组织在互联网上展示自己的品牌、作品、产品或服务。随着技术的发展,现在制作网站变得越来越简单。下面是一个简单的步骤指南,帮助你制作自己的网站。 1. 确定你的网站需求和目标 在开始之前,你需要明确你的网站的…

左右旋分辨

从端头看,切削路径顺时针是右旋,反时针左旋。

【JVM-1】JVM内存结构

目录 什么是JVMJava源码执行机制class文件的组成部分 JVM跨平台原理JVM的组成堆年轻代与老年代对象分配过程GC类型Full GC触发条件:对象进入老年代的触发条件 对象分配过程: 字符串常量池静态变量线程本地分配缓冲区(TLAB)TLAB相关…

SpringBoot前后端传递数据时常用的JSON格式数据是什么?【讲解JSON概念、语法、以及Java对象互转】

SpringBoot前后端传递数据时常用的JSON格式数据是什么? JSON概念JSON语法JSON的两种结构:JSON字符串和Java对象互转:objectMapper.writeValueAsString(person);objectMapper.readValue(jsonStr,Person.class); 在SpringMVC框架中,…

【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发

文章目录 一、效果展示二、简介三、安装Jib插件1、区分环境2、安装插件一、效果展示 本地是window系统,无docker环境,没有任何runtime,使用jib工具打包镜像并推送完成,用时20秒 二、简介 Jib 是 Google 开发的一款开源工具,旨在帮助 Java 开发者更高效地将 Java 应用程…

ZNB40 矢量网络分析仪

ZNB40 矢量网络分析仪 100kHz至40GHz的宽频率范围,具有四个端口和附加信号发生器 概述 R&SZNB40 提供 100 kHz 至 40 GHz 的宽频率范围,具有四个端口和附加信号发生器。 罗德与施瓦茨带四个端口和附加内部信号源的 40 GHz 中档矢量网络分析仪&…

Ubuntu20.04安装python2和python3及版本配置

Ubuntu20.04安装python2和python3及版本配置_ubuntu 20.04 python3-CSDN博客https://blog.csdn.net/pangc2014/article/details/117407413 >>>ubuntu 安装源码python2_mob649e8161c39d的技术博客_51CTO博客https://blog.51cto.com/u_16175489/7327966

【Academy】测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities

测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities 概述WebSockets是什么?HTTP和WebSockets有什么区别?如何建立WebSocket连接?WebSocket消息看起来像什么? 操纵WebSocket流量拦截和修改WebSocket消息重放和生成新的W…

ONLYOFFICE 8.1:引领桌面办公新潮流,功能升级全面提升

目录 一、ONLYOFFICE是什么? 二、功能完善的PDF编辑器 三、幻灯片版式升级 四、改进从右至左显示 五、新的本地化选项 六、多媒体功能增强 七、应用价值探讨 一、ONLYOFFICE是什么? ONLYOFFICE 是一款功能强大的办公套件,旨在提供全面…

什么是云服务器镜像,如何选择?

云服务器镜像是一种用于业务连续性、灾难恢复和备份的技术手段,其本质是云端创建的服务器数据副本。 这些镜像内容可以涵盖系统、光盘、软件、网站甚至整个服务器,主要用于创建容错和冗余服务器计算基础架构,为用户提供了一个方便且可靠的解…