# 在可视化表达式中使用 Anthropic (Amazon Bedrock) 连接

除了使用加载脚本将 Anthropic 问答添加到应用程序的数据模型中，您还可以在分析模式下，直接在应用程序的图表中执行这些操作。单个字段的数据在您和 Anthropic 之间来回发送。

信息注释

Amazon Bedrock - Converse API 连接器允许您连接到 Amazon Bedrock 的通用 API，用于文本生成模型，包括通过此连接器提供的一个或多个模型。考虑用 Anthropic (Amazon Bedrock) 连接替换 Amazon Bedrock - Converse API 连接以获得更高级的功能。有关更多信息，请参阅[Amazon Bedrock - Converse API 分析源](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-bedrock-converse-api-overview.htm)。

在许多情况下，用于加载脚本连接的代码可以重新用于图表，但存在一些差异。

如果用例是基于用户输入的，那么您可以在图表表达式中使用分析连接和相应的服务器端扩展语法来创建交互式图表，可视化从模型端点接收到的数据。

## 数据请求量的注意事项

建议只在一行或几行数据的图表表达式中使用 OpenAI 连接。Anthropic (Amazon Bedrock)不建议使用图表表达式向 Anthropic 发送大量数据。

了解每个请求发送的行数非常重要。在图表表达式中配置 Azure OpenAI 连接的错误可能会导致意外的大型请求（例如，由于图表中数据模型的使用不当，导致具有相同问题的相同行）。在与第三方平台交互之前，请确保您了解图表表达式计算中使用的字段及其在数据模型中的位置如何影响您与第三方的财务协议和计费安排。外部平台的使用率越高，所产生的成本就越高。

请遵循以下指导原则来缓和和限制您的请求大小：

* 使用图表表达式时，仅使用 Text 对象中的连接（来自 Dashboard bundle）。强烈建议在表对象中使用 Anthropic (Amazon Bedrock) 连接，尤其是当您将表达式添加到已添加一个或多个维度的表中时。

* 如果图表表达式链接到应用程序的数据模型，请在表达式中使用 if 语句，仅在应用程序中进行单个选择时计算图表。这大大减少了图表将发送到 Anthropic 的请求中的行数。

* 如果您使用 OpenAI 连接发送大型请求，请在加载脚本中使用该连接，而不是在图表表达式中使用，以便将数据预加载到数据模型中。Anthropic (Amazon Bedrock)

## 提示工程

在编写发送给生成式 AI 模型的请求（通常称为提示）时，请遵循与您交互的平台特定的指导方针。有关提示工程的信息以及有关如何构建 Amazon Bedrock 连接器提示的一些指导原则，请参见[提示工程概念](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-engineering-guidelines.html)。

### 构造 Anthropic - Claude 配置提示

您可以使用Anthropic - Claude 配置连接多个传统克劳德型号。

为此配置编写的提示需要特定的语法才能成功返回补全。以下为要求：

* 每项提示必须以文本 Human: 为前缀

* 每项提示必须以文本 Assistant: 为后缀

* Human: 前缀必须有两个前置回车。这是通过在前缀之前向表达式添加 `chr(10) & chr(10)` 来实现的。

* Assistant: 后缀必须有两个前置回车。这是通过在后缀之前向表达式添加 `chr(10) & chr(10)` 来实现的。

有关如何构造和格式化 Claude 提示的信息，请参阅[构造提示](https://docs.anthropic.com/claude/docs/constructing-a-prompt)。

有关示例，请参阅[简单示例](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-bedrock-anthropic-use.htm#Quick)。

### 构造 Anthropic - Claude (Messages API) 配置提示

Anthropic - Claude (Messages API) 配置连接到消息 API。

这些模型的提示不需要任何特定的语法。有关示例，请参阅[简单示例](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-bedrock-anthropic-use.htm#Quick)。

## 创建图表表达式

执行以下操作：

1. 在编辑可视化时，单击 the 表达式 icon 进入表达式编辑器。

2. 在表达式编辑器中，在表达式字段中输入一个表达式。表达式必须使用服务器端扩展语法构造。

## 简单示例

在这里，您可以找到在开始使用 Anthropic (Amazon Bedrock) 连接器时可以使用的示例表达式。请考虑以下细节：

* 仅使用带有 Text 对象的表达式（来自 Dashboard bundle）。请参阅[文本](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/DashboardBundle/text-object.htm)。

* 考虑在表达式中添加一条 `if` 语句，以控制何时重新计算图表，并根据应用程序中的用户选择进行更新。

* 为了使表达式工作，您必须替换 `connectionname` 值和任何字段名称，以匹配您自己的连接和应用程序。

* 此连接器的每个配置都有不同的语法要求。请参阅[提示工程](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-bedrock-anthropic-use.htm#Prompt)。

Anthropic (Amazon Bedrock) 分析连接器的图表表达式示例

Anthropic (Amazon Bedrock)Anthropic (Amazon Bedrock) 分析连接器的图表表达式示例

| 连接器配置 | 表达式 | 汇总 |
| --- | --- | --- |
| Anthropic - Claude | `endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Anthropic_(Amazon_Bedrock)","column":"completion"}}', chr(10) & chr(10) & 'Human:' & 'Translate this text from English to Spanish: The sun was rising over the new tomorrow with a tinge of excitement.' & chr(10) & chr(10) & 'Assistant:')` | 此语句将返回对已输入到表达式中的单个问题的响应。Anthropic<br><br>警告注释<br><br>此表达式不使用 `if` 语句，因此在绑定到数据模型中的字段时不建议使用。它只适用于具有包含硬编码值的单个输入单元格的独立表达式。 |
| Anthropic - Claude | `if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Anthropic_(Amazon_Bedrock)","column":"completion"}}', chr(10) & chr(10) & 'Human:' & vQuestion & chr(10) & chr(10) & ' Assistant:'))` | 这是一个可以在链接到变量输入控件的文本对象（来自 Dashboard bundle）中使用的语句。只有在输入时才计算图表。当用户在对象中键入输入内容并按 Enter 键时，图表将显示对其输入的响应。<br><br>请注意，根据 Anthropic 提示要求，用户必须在输入中手动输入前缀和后缀。<br><br>有关使用不同连接器的类似演练，请参阅[练习：使用变量创建文本输入框](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-3.htm#Exercise)。 |
| Anthropic - Claude | `if(count(distinct [BusinessTopic]) = 1, endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Anthropic_(Amazon_Bedrock)","column":"completion"}}', chr(10) & chr(10) & 'Human: write me a sample response from a technical support department for a customer complaint about ' & [BusinessTopic] & chr(10) & chr(10) & ' Assistant:'))` | 在本例中，只有在从应用程序的数据模型的字段 `IssueCategory` 中选择了一个不同的值时，才会计算图表。向模型发送一个请求，要求技术支持部门提供关于一般类型问题的示例响应，`IssueCategory` 字段中包含一个列表。图表将根据用户选择的值进行更新。 |
| Anthropic - Claude (Messages API) | `endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Anthropic_(Amazon_Bedrock)","column":"text"}}', 'Translate this text from English to Spanish: The sun was rising over the new tomorrow with a tinge of excitement.')` | 此语句将返回对已输入到表达式中的单个问题的响应。Anthropic<br><br>警告注释<br><br>此表达式不使用 `if` 语句，因此在绑定到数据模型中的字段时不建议使用。它只适用于具有包含硬编码值的单个输入单元格的独立表达式。 |
| Anthropic - Claude (Messages API) | `if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Anthropic_(Amazon_Bedrock)","column":"text"}}',vQuestion))` | 这是一个可以在链接到变量输入控件的文本对象（来自 Dashboard bundle）中使用的语句。只有在输入时才计算图表。当用户在对象中键入输入内容并按 Enter 键时，图表将显示对其输入的响应。<br><br>有关使用不同连接器的类似演练，请参阅[练习：使用变量创建文本输入框](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-3.htm#Exercise)。 |
| Anthropic - Claude (Messages API) | `if(count(distinct [IssueCategory]) = 1, endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Anthropic_(Amazon_Bedrock)","column":"text"}}', 'Write me a sample response from a technical support department for a customer complaint about ' & [IssueCategory]'))` | 在本例中，只有在从应用程序的数据模型的字段 `IssueCategory` 中选择了一个不同的值时，才会计算图表。向模型发送一个请求，要求技术支持部门提供关于一般类型问题的示例响应，`IssueCategory` 字段中包含一个列表。图表将根据用户选择的值进行更新。 |

## 了解详情

* [服务器端扩展语法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)
* [if 脚本和图表功能](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/if.htm)
* [GetSelectedCount - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getselectedcount.htm)
* [在表达式中使用变量](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)