亚马逊AWS官方博客

Writer Palmyra X5 和 X4 模型现已在 Amazon Bedrock 中推出

在最近的几个月我们看到,基础模型(FM)的上下文窗口得到了扩展,很多基础模型目前都能够处理序列长度,这在一年以前是不可想象的。不过,在构建由人工智能提供支持的应用程序方面仍然面临着挑战,这些应用程序可以处理大量的信息,同时维持企业的应用所需的可靠性和安全性标准。

出于这些原因,我们非常高兴地宣布,Writer Palmyra X5 和 X4 模型现已作为完全托管式无服务器产品在 Amazon Bedrock 中推出。AWS 是第一家提供 Writer 完全托管式模型的主要云服务提供商。Palmyra X5 是 Writer 今天推出的一款新模型。Palmyra X4 此前已在 Amazon Bedrock Marketplace 中推出。

Writer Palmyra 模型提供了强大的推理功能,支持基于代理的复杂工作流,同时可以维持企业的安全标准和可靠性。Palmyra X5 拥有一百万个令牌上下文窗口,而 X4 支持 12.8 万个令牌上下文窗口。借助这些广泛的上下文窗口,这些模型消除了以往开发应用程序和代理时受到的一些限制,并能够更深入地执行分析和更全面地完成任务。

通过此次发布,Amazon Bedrock 会继续提供最先进的模型和工具,使您能够借助安全性、隐私性和负责任的人工智能来构建生成式人工智能应用程序。

作为基础模型开发领域的先驱,Writer 在 Amazon SageMaker HyperPod 上训练和微调行业领先的模型。凭借经过优化的分布式训练环境,Writer 缩短了训练时间,并能够更快地将模型推向市场。

Palmyra X5 和 X4 使用案例

Writer Palmyra X5 和 X4 专为企业使用案例而设计,它们将强大的功能与严格的安全措施相结合,包括系统及组织控制(SOC)2支付卡行业数据安全标准(PCI DSS)以及《健康保险流通与责任法案》(HIPAA)合规性认证。

Palmyra X5 和 X4 模型在多个行业的各种企业应用场景中表现出色:

金融服务 – Palmyra 为投资银行、资产和财富管理领域构建模型驱动的解决方案,包括交易事务支持;10-Q、10-K 和财报会议记录;基金和市场研究;以及大规模的个性化客户联系。

医疗保健和生命科学 – 支付方和提供商使用 Palmyra 模型,构建用于会员获取和开通、上诉和申诉、个案和使用情况管理以及雇主征求建议书(RFP)回复的解决方案。制药公司将这些模型投入到商业应用、医疗事务、研发和临床试验中。

零售和消费品 – Palmyra 模型支持人工智能解决方案,用于产品说明创建和变更、绩效分析、SEO 更新、品牌和合规性审查、自动化活动工作流以及 RFP 分析和响应。

技术 – 技术行业的各个公司实施 Palmyra 模型,用于个性化和基于账户的营销、内容创建、活动工作流自动化、账户准备和研究、知识支持、职位简报和候选人报告以及 RFP 响应。

Palmyra 模型支持一整套企业级功能,包括:

适应性思维 – 混合模型将高级推理与企业级可靠性相结合,在复杂的问题解决流程和复杂的决策流程中表现出色。

多步骤工具调用 – 支持高级工具调用功能,可用于复杂的多步骤工作流和代理式操作,包括与企业系统进行交互,以执行更新系统、执行交易、发送电子邮件和触发工作流等任务。

企业级可靠性 – 利用专门针对业务内容进行了训练的模型,在维持企业的应用所需的严格质量标准的同时,提供一致、准确的结果,以使输出与专业标准保持一致。

在 Amazon Bedrock 中使用 Palmyra X5 和 X4

对于 Amazon Bedrock 中新推出的所有无服务器模型,我首先需要请求访问权限。在 Amazon Bedrock 控制台中,我从导航窗格中选择模型访问权限,以便能够访问 Palmyra X5Palmyra X4 模型。

控制台屏幕截图

当能够访问这些模型之后,我就可以开始通过 Amazon Bedrock Converse API,使用任何 AWS SDK 来构建应用程序。这些模型使用跨区域推理功能和下面这些推理配置文件:

  • 对于 Palmyra X5:us.writer.palmyra-x5-v1:0
  • 对于 Palmyra X4:us.writer.palmyra-x4-v1:0

下面是适用于 Python 的 AWS SDK(Boto3)的一种示例实施方式。在这种情况下,存在现有产品的一个新版本。我需要准备一份新增功能的详细比较。我拥有新旧两份产品手册。我使用 Palmyra X5 的大量输入上下文来读取和比较本手册的两个版本,并准备比较文档的初稿。

import sys
import os
import boto3
import re

AWS_REGION = "us-west-2"
MODEL_ID = "us.writer.palmyra-x5-v1:0"
DEFAULT_OUTPUT_FILE = "product_comparison.md"

def create_bedrock_runtime_client(region: str = AWS_REGION):
    """创建并返回 Bedrock 客户端。"""
    return boto3.client('bedrock-runtime', region_name=region)

def get_file_extension(filename: str) -> str:
    """获取文件扩展名。"""
    return os.path.splitext(filename)[1].lower()[1:] or 'txt'

def sanitize_document_name(filename: str) -> str:
    """清理文档名称。"""
    # 移除扩展名并获取基本名称
    name = os.path.splitext(filename)[0]
    
    # 将无效的字符替换为空格
    name = re.sub(r'[^a-zA-Z0-9\s\-\(\)\[\]]', ' ', name)
    
    # 将多个空格替换为单个空格
    name = re.sub(r'\s+', ' ', name)
    
    # 去掉前导空格/尾随空格
    return name.strip()

def read_file(file_path: str) -> bytes:
    """在二进制模式下读取一个文件。"""
    try:
        with open(file_path, 'rb') as file:
            return file.read()
    except Exception as e:
        raise Exception(f"读取文件 {file_path} 时出错:{str(e)}")

def generate_comparison(client, document1: bytes, document2: bytes, filename1: str, filename2: str) -> str:
    """为两本产品手册生成包含标记的比较。"""
    print(f"正在为 {filename1} 和 {filename2} 生成比较")
    try:
        response = client.converse(
            modelId=MODEL_ID,
            messages=[
                {
                    "role": "user",
                    "content": [
                        {
                            "文本":"请比较这两本产品手册,并以标记格式创建一份详细比较。重点比较主要功能和规格,并突出这两款产品的主要区别。"
                        },
                        {
                            "document": {
                                "format": get_file_extension(filename1),
                                "name": sanitize_document_name(filename1),
                                "source": {
                                    "bytes": document1
                                }
                            }
                        },
                        {
                            "document": {
                                "format": get_file_extension(filename2),
                                "name": sanitize_document_name(filename2),
                                "source": {
                                    "bytes": document2
                                }
                            }
                        }
                    ]
                }
            ]
        )
        return response['output']['message']['content'][0]['text']
    except Exception as e:
        raise Exception(f"生成比较时出错:{str(e)}")

def main():
    if len(sys.argv) < 3 or len(sys.argv) > 4:
        cmd = sys.argv[0]
        print(f"使用情况:{cmd} <manual1_path> <manual2_path> [output_file]")
        sys.exit(1)

    manual1_path = sys.argv[1]
    manual2_path = sys.argv[2]
    output_file = sys.argv[3] if len(sys.argv) == 4 else DEFAULT_OUTPUT_FILE
    paths = [manual1_path, manual2_path]

    # 检查每个文件是否存在
    for path in paths:
        if not os.path.exists(path):
            print(f"错误:文件不存在:{path}")
            sys.exit(1)

    try:
        # 创建 Bedrock 客户端
        bedrock_runtime = create_bedrock_runtime_client()

        # 读取这两本手册
        print("正在读取文档...")
        manual1_content = read_file(manual1_path)
        manual2_content = read_file(manual2_path)

        # 直接从这些文档生成比较
        print("正在生成比较...")
        comparison = generate_comparison(
            bedrock_runtime,
            manual1_content,
            manual2_content,
            os.path.basename(manual1_path),
            os.path.basename(manual2_path)
        )

        # 将比较保存到文件
        with open(output_file, 'w') as f:
            f.write(comparison)

        print(f"已成功生成比较! 已保存到 {output_file}")

    except Exception as e:
        print(f"错误:{str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    main()

要了解如何将 Amazon Bedrock 与 AWS SDK 结合使用,请浏览《Amazon Bedrock 用户指南》中的代码示例

注意事项

Writer Palmyra X5 和 X4 模型现已在美国西部(俄勒冈州)AWS 区域Amazon Bedrock 中推出,并支持跨区域推理。有关各个区域的模型支持情况的最新信息,请参阅 Amazon Bedrock 文档。有关定价的信息,请访问 Amazon Bedrock 定价

这些模型支持英语、西班牙语、法语、德语、中文以及其他多种语言,因此非常适合全球的企业应用。

使用这些模型的广泛上下文功能,开发人员可以构建更复杂的应用程序和代理,这些应用程序和代理可以处理大量的文档、执行复杂的多步骤推理以及处理复杂的代理式工作流。

要立即开始使用 Writer Palmyra X5 和 X4 模型,请访问《Amazon Bedrock 用户指南》中的 Writer 模型部分。您也可以在我们 community.aws 网站的“生成式人工智能”部分中,了解我们的开发人员社区如何在其解决方案中使用 Amazon Bedrock。

欢迎与我们分享您使用这些强大的新功能构建了什么!

Danilo


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。