一、Chat(对话)
能够理解自然语言并进行推理,从而进行反馈应答。这包括:
- 理解用户的意图和上下文。
- 生成连贯且有意义的回应。
- 处理多轮对话,保持对话的上下文一致性。
+----------------------------------+
| 用户: 今天天气怎么样? |
+----------------------------------+
| 模型: 今天的天气晴朗,气温22°C。 |
+----------------------------------+
二、Embedding(向量化)
1、定义
把高纬数据映射到一个低维度的向量空间的过程,这个映射的过程,本质上是一个数据特征提取与转化的过程。
(1)特征提取
- 在高维空间中,数据的维度可能非常大,例如文本中的每个单词可以用数千维的向量表示。
- 特征提取的目标是从这些高维数据中提取出更有用的、低维的特征表示,这些特征能够保留数据的核心语义和结构信息。
(2)向量表示
- 降维后的向量表示包含了数据的语义信息,这使得不同的高维输入数据可以在向量空间中进行比较和分析。
- 向量空间中的距离或相似度可以用于文本分类、相似度计算、聚类等任务。
(3)降纬(取决于应用场景与需求,大模型的通常只负责生成高纬向量表示)
- Embedding 过程将数据从高维空间映射到低维空间。例如,将文本数据的词从数千维的空间映射到几十维的空间。
- 低维的向量表示保留了数据的主要语义特征,使得相似的数据点在向量空间中距离较近。
2、示意
(1)文本示意
以“小明父母今天送给小明一辆黄色的法拉利跑车作为生日礼物”这句话进行特征提取示意。
- 不同层次的特征提取(解析/理解含义)
- 关键词提取
- 人物:小明
- 事件:送礼
- 物品:黄色的法拉利跑车
- 时间:今天
- 目的:生日礼物
- 实体识别
- 人名:小明
- 物品;法拉利跑车
- 颜色;黄色
- 时间/日期:今天
- 时间类型:生日
- 关系抽取
- 送礼关系:小明的父母 送 黄色法拉利跑车给小明
- 赠送目的:作为生日目的
- 词性标注
- 小明(人名)
- 父母(名词)
- 今天(时间副词)
- 送给(动词短语)
- 一辆(数量词)
- 黄色的(形容词)
- 法拉利(名词,品牌)
- 跑车(名词)
- 作为(介词)
- 生日(名词)
- 礼物(名词)
- 关键词提取
- 基于各特征进行向量化处理
- 输入处理:分词、标记等处理
- 初始化向量:将分词后的每个Token转换为预训练的词向量
- 特征融合:将不同层次的特征进行融合(不太了解)
- 高纬向量生成:对每个Token(词或子句)进行编码,生成高纬向量表示
- 输出向量:通过特定的聚合等方式从高纬向量中提取出整个句子的向量表示
(2)图形示意
三、Function Calling(函数调用)
将自然语言描述需要执行的任务转换为相应的函数调用。这包括以下步骤:
1、定义函数接口
应用系统按照统一规范定义用于 Function Calling 的函数接口。函数接口应该明确描述函数的功能、参数和返回值。
2、意图识别
结合自然语言描述与应用系统函数接口的描述信息,通过模型识别需要调用的函数接口。这一步骤涉及自然语言理解(NLU)和意图分类。
3、参数映射(部分模型不支持,因此不具备Function Calling能力)
再次结合自然语言描述与识别出的函数接口参数定义,通过模型提取并完成函数接口的参数的数据映射。参数映射需要准确识别并提取用户输入中的关键信息,并将其转换为函数调用所需的格式。
4、执行函数
在应用系统中调用相应的函数或API,执行任务。
5、返回结果
将函数的执行结果返回给用户,可以选择再次通过模型进行自然语言润色后返回。润色后的结果更容易被用户理解和接受。
gpt-4-turbo的 Function calling API示例
(1)图例
+-----------------------------------------------+
| 用户: What's the weather like in Boston today? |
+-----------------------------------------------+
| 识别意图: get_current_weather |
| 参数映射: "Boston" |
+-----------------------------------------------+
| 执行函数: get_current_weather("Boston") |
+-----------------------------------------------+
| 返回结果: 波士顿的天气是晴天,气温28°C |
+-----------------------------------------------+
(2)请求数据
{
"model": "gpt-4-turbo",
"messages": [
{
"role": "user",
"content": "What's the weather like in Boston today?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location"
]
}
}
}
],
"tool_choice": "auto"
}
(3)返回数据
{
"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_abc123",
"type": "function",
"function": {
"name": "get_current_weather",
"arguments": "{\n\"location\": \"Boston\"\n}"
}
}
]
},
"logprobs": null,
"finish_reason": "tool_calls"
}
],
"usage": {
"prompt_tokens": 82,
"completion_tokens": 17,
"total_tokens": 99
}
}