AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Claude 3.5 Sonnet 在从财务报告中提取复杂图表方面表现如何?
发布日期:2024-07-06 08:35:26 浏览次数: 1868


Claude 3.5 Sonnet在从财务报告中提取复杂图表方面的表现如何?

我对比了Claude 3.5 Sonnet、Claude 3 Opus和GPT-4o在从财务报告中提取复杂图表的能力!

在我的笔记本中,我测试了这些模型从一张特别复杂的财务图表中准确提取详细信息的能力。结果相当有启发性:

Claude 3.5 Sonnet 表现出色,准确提取了所有信息,甚至包括图表中最复杂的部分。它在处理详细财务数据方面的精确度确实令人印象深刻!

Claude 3 和 GPT-4o 则遗漏了一些关键信息,并且提取的部分数据不正确。这凸显了Claude 3.5在性能上的显著提升。

让我们深入了解一下:

我获取了2022年摩根大通的财务报告。我只保留了其中最复杂的一张图表,并将这一页PDF转换为图像,以便使用多模态部分的大模型:Claude 3.5 Sonnet、Claude 3 Opus和GPT-4o。

这就是我希望不同多模态模型阅读并从中提取数据的图像:

调用 Claude 3.5

client_claude = anthropic.Anthropic(
api_key=CLAUDE_API_KEY,
)

MODEL_NAME = "claude-3-5-sonnet-20240620"
def get_completion_claude(messages):
response = client_claude.messages.create(
model=MODEL_NAME,
max_tokens=2048,
temperature=0,
messages=messages
)
return response.content[0].text

我创建了这个方法来追加内容

def get_message_content(question, encoded_pngs):
content = [{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": encoded_png}} for encoded_png in encoded_pngs]
content1 = {"type": "text", "text": question}
content.append(content1)

messages = {"role": 'user',"content": content}

return messages

开始与 Claude 3.5 Sonnet 聊天:

这是提示:

question = """
从图片中加载图表数据并以 Markdown 格式输出。
尽最大努力从图片中提取图表数据。
如果无法提取图表数据,请总结图片并返回总结内容。
"""

messages = get_message_content(question, base64_encoded_pngs)
messages
all_messages = [messages]
chart_analysis = get_completion_claude(all_messages)
print(chart_analysis)

我得到了这个答案:

如果你对比从图表中提取的数字,你会发现它们是正确的!!这是向多模态和复杂图表提取迈出的一大步。

现在,我向 LLM 提出了不同的问题,以检查它与图片交互的能力:

question = "2012 年的净利润是多少?"
messages = get_message_content(question, base64_encoded_pngs)
# print(messages)
print(get_completion_claude([messages]))
# 根据图表,2012 年的净利润为 213 亿美元。

答案是正确的。

我们再试一个:

question = "2014 年的摊薄每股收益和 2017 年的有形普通股权益回报率分别是多少?"
messages = get_message_content(question, base64_encoded_pngs)
print(get_completion_claude([messages]))
回答您的问题:

1. 2014 年的摊薄每股收益(EPS)为 6.00 美元。

2. 2017 年的有形普通股权益回报率(ROTCE)为 12%。

这些数据可以在图表中找到。2014 年,代表摊薄 EPS 的黄色柱子显示为 6.00 美元。2017 年,代表 ROTCE 的蓝色线条显示为 12%。

2014 年的 EPS 数值不正确:正确的应该是 5.29 美元。LLM 给出的答案是 6.00 美元。

现在,我们将 LLM 第一次提取的数字追加到发送给它的消息中,并再次询问相同的问题:

llm_answer = {"role": 'assistant',"content": chart_analysis}
all_messages.append(llm_answer)

question2 = "2014 年的摊薄每股收益和 2017 年的有形普通股权益回报率分别是多少?"
messages2 = get_message_content(question2, base64_encoded_pngs)

all_messages.append(messages2)
all_messages
llm_completion = get_completion_claude(all_messages)
print(llm_completion)

这是答案:

根据图片中的图表:

1. 2014 年的摊薄每股收益(EPS)为 5.29 美元

2. 2017 年的有形普通股权益回报率(ROTCE)为 12%

现在,我们得到了 2014 年 EPS 的正确数值!!

调用 Claude 3 Opus

现在让我们与 Claude 3 Opus 交互,让它从图表中提取数据:

MODEL_NAME = "claude-3-opus-20240229"
def get_completion_claude3(messages):
response = client_claude.messages.create(
model=MODEL_NAME,
max_tokens=2048,
temperature=0,
messages=messages
)
return response.content[0].text
question = """
从图片中加载图表数据并以 Markdown 格式输出。
尽最大努力从图片中提取图表数据。
如果无法提取图表数据,请总结图片并返回总结内容。
"""

messages = get_message_content(question, base64_encoded_pngs)

all_messages = [messages]
chart_analysis = get_completion_claude3(all_messages)
print(chart_analysis)

如果你对比 Claude 3 Opus 和 Claude 3.5 Sonnet 的输出,你会发现 Claude 3 检索到了错误的信息,这在 ROTCE 列中清晰可见。Claude 3.5 Sonnet 提取了正确的数值。

调用 GPT-4o

现在让我们与 GPT-4Omni 进行对话

from openai import OpenAI

client_openai = OpenAI(api_key=OPENAI_API_KEY)
MODEL_NAME_GPT = "gpt-4o"

def get_completion_gpt4o(messages):
response = client_openai.chat.completions.create(
model=MODEL_NAME_GPT,
# max_tokens=2048,
temperature=0,
messages=messages
)
print(response.model)
return response.choices[0].message.content
def get_message_content_openai(question, encoded_pngs):
# content = [{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": encoded_png}} for encoded_png in encoded_pngs]
content = [{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{encoded_png}"}} for encoded_png in encoded_pngs]
content1 = {"type": "text", "text": question}
content.append(content1)

messages = {"role": 'user',"content": content}

return messages
question = """
从图片中加载图表数据并以 Markdown 格式输出。
尽力从图片中提取图表数据。
如果无法提取图表数据,请总结图片内容并返回总结。
"""

messages = get_message_content_openai(question, base64_encoded_pngs)
messages
gpt4o_completion = get_completion_gpt4o([messages])
print(gpt4o_completion)

以下是部分回答:

即使 GPT-4o 成功收集了表格数据,而 Claude 3.5 Sonnet 为了避免“简单化”而避免这样做,但从图表中提取的数值在最初几年尤其不准确。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询