创办一个网站需要多少资金,河南城市建设网站,网站图片都是站外连接对seo,西安手机网站目录 0. 承前1. 简介1.1 通义千问(Qwen-Long)的长文本处理能力 2. 基础功能实现2.1 文件上传2.2 单文件分析2.3 多文件分析 3. 汇总代码运行3.1 封装的工具函数3.2 主要功能特点3.3 使用示例3.4 首次运行3.5 运行结果展示 4. 注意事项4.1 文件要求4.2 错误处理机制4.3 最佳… 目录 0. 承前1. 简介1.1 通义千问(Qwen-Long)的长文本处理能力 2. 基础功能实现2.1 文件上传2.2 单文件分析2.3 多文件分析 3. 汇总代码运行3.1 封装的工具函数3.2 主要功能特点3.3 使用示例3.4 首次运行3.5 运行结果展示 4. 注意事项4.1 文件要求4.2 错误处理机制4.3 最佳实践 5. 总结 0. 承前
本篇博文是对文章链接: 5. 马科维茨资产组合模型政策意图AI金融智能体(Qwen-Max)增强方案理论Python实战 6. 马科维茨资产组合模型政策意图AI金融智能体(DeepSeek-V3)增强方案理论Python实战 的政策信息输入过少而作的改良开发金融研报导入AI金融智能体实现批量处理与智能分析。
本文主旨
信息扩充由于上两篇文章中AI金融智能体输入信息量过少因此本文使用长文本大模型(Qwen-Long)来扩充AI智能体的信息输入。开发过程记录本文目的是打通大批量金融研报至长文本AI金融智能体(Qwen-Long)的信息通道并没有实现分析结果对金融资产组合权重的影响具体实现参考文章 7. 马科维茨资产组合模型金融研报AI长文本智能体(Qwen-Long)增强方案理论Python实战
如果想更加全面清晰地了解金融资产组合模型进化论的体系架构可参考 0. 金融资产组合模型进化全图鉴
1. 简介
本文介绍如何使用通义千问大模型(Qwen-long)来批量处理和分析PDF研究报告。通过DashScope API我们可以让AI模型阅读并分析多个PDF文件从而获得专业的分析见解。
1.1 通义千问(Qwen-Long)的长文本处理能力
通义千问长文本版本(Qwen-Long)是阿里云推出的专门用于处理长文本的大语言模型具有以下特点 超长上下文支持 支持高达100万token的上下文长度可以同时处理多个完整的研究报告保持长文本的连贯性理解 多文档并行处理 支持多个PDF文件的同时分析能够综合多份报告的信息提供跨文档的关联分析 专业领域适应 对金融研报格式有良好的理解能准确提取报告中的关键数据支持专业术语和行业分析 智能分析能力 提供深度的内容理解和总结支持多角度的对比分析能够提炼出有价值的投资见解
这些特性使得Qwen-Long特别适合处理金融研究报告这类专业性强、篇幅长的文档能够帮助分析师快速获取和理解大量研报信息。
2. 基础功能实现
2.1 文件上传
首先我们需要实现PDF文件的上传功能。以下代码展示了如何上传单个PDF文件
import os
from pathlib import Path
from openai import OpenAIclient OpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,
)file_object client.files.create(filePath(百炼系列手机产品介绍.docx), purposefile-extract)
print(file_object.id)2.2 单文件分析
上传文件后我们可以让模型分析单个文件的内容。这里使用流式返回可以实时获取模型的分析结果
completion client.chat.completions.create(modelqwen-long,messages[{role: system, content: You are a helpful assistant.},{role: system, content: fileid://file-fe-xxx},{role: user, content: 这篇文章讲了什么}],streamTrue,stream_options{include_usage: True}
)full_content
for chunk in completion:if chunk.choices and chunk.choices[0].delta.content:full_content chunk.choices[0].delta.contentprint(chunk.model_dump())2.3 多文件分析
通义千问支持同时分析多个PDF文件只需在file_id中用逗号分隔多个文件ID
completion client.chat.completions.create(modelqwen-long,messages[{role: system, content: You are a helpful assistant.},{role: system, content: ffileid://file-fe-xxx1,fileid://file-fe-xxx2},{role: user, content: 这几篇文章讲了什么}],streamTrue,stream_options{include_usage: True}
)3. 汇总代码运行
3.1 封装的工具函数
我们将上述功能封装成一个完整的工具函数get_ai_comments支持批量处理PDF文件并进行智能分析
import os
from pathlib import Path
from openai import OpenAI
from typing import List, Optionaldef get_ai_comments(character: str,path: str,question: str,api_key: str
) - str:使用AI分析指定路径下的所有PDF报告内容Args:character (str): AI的角色设定path (str): 报告所在目录的路径会被转换为绝对路径question (str): 向AI提出的具体问题api_key (str): DashScope API密钥Returns:str: AI的分析结果# 初始化 OpenAI 客户端client OpenAI(api_keyapi_key,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)# 将路径转换为绝对路径abs_path os.path.abspath(path)report_dir Path(abs_path)if not report_dir.exists():try:report_dir.mkdir(parentsTrue, exist_okTrue)except Exception as e:raise ValueError(f创建目录失败: {report_dir}, 错误: {str(e)})return f已创建目录{abs_path}请在目录中放入研报。# 获取所有PDF文件并上传file_ids []pdf_files list(report_dir.glob(*.pdf))if not pdf_files:return f在目录 {report_dir} 中没有找到PDF文件请先添加需要分析的PDF报告。# 检查文件是否可读且非空valid_pdf_files []for pdf_file in pdf_files:try:if pdf_file.stat().st_size 0: # 检查文件大小valid_pdf_files.append(pdf_file)except Exception:continueif not valid_pdf_files:return f在目录中没有找到有效的PDF文件请确保文件不为空且可以正常读取。# 上传有效的PDF文件for pdf_file in valid_pdf_files:try:file_object client.files.create(filepdf_file,purposefile-extract)file_ids.append(file_object.id)except Exception:continueif not file_ids:return f所有PDF文件上传失败请检查文件是否正确或API配置是否正确。# 构建file_ids字符串file_ids_str ,.join([ffileid://{file_id} for file_id in file_ids])try:# 创建对话完成completion client.chat.completions.create(modelqwen-long,messages[{role: system, content: character},{role: system, content: file_ids_str},{role: user, content: question}],streamFalse # 使用非流式返回)# 返回分析结果return completion.choices[0].message.contentexcept Exception as e:error_msg str(e)if content blank in error_msg:return f文件内容提取失败。请检查以下几点\n1. PDF文件是否为扫描件\n2. PDF文件是否加密\n3. PDF文件编码格式是否正确\n4. PDF文件是否完整未损坏raise Exception(f调用API时发生错误: {error_msg})finally:# 清理已上传的文件for file_id in file_ids:try:client.files.delete(file_id)except Exception:continue 3.2 主要功能特点 智能路径处理 自动将相对路径转换为绝对路径自动创建不存在的目录提供清晰的路径错误提示 文件验证机制 检查PDF文件是否存在验证文件是否可读且非空支持批量处理多个文件 错误处理与恢复 详细的错误提示信息文件上传失败自动跳过异常情况优雅降级 资源管理 自动清理上传的文件内存使用优化避免资源泄露
3.3 使用示例 基于RPA技术Robotic Process Automation获取的准备研报文件 补充想要找到国内外金融领域的研报欢迎私信咨询作者。 AI人设提示词工程
character ## 核心定位- **角色**专业研报分析与政策解读专家- **专长**多维度研报解读、跨行业分析、政策影响评估- **特点**数据驱动、逻辑严谨、洞察深入## 分析框架### 1. 研报解构- 核心观点提炼- 关键数据分析- 行业趋势判断- 风险点识别### 2. 多维分析- 横向行业对比- 纵向历史演变- 政策影响评估- 市场竞争格局### 3. 深度研判- 发展机遇- 潜在风险- 投资价值- 未来展望## 输出标准### 结构化分析1. 核心发现- 关键结论- 数据支撑- 趋势判断2. 深度解读- 行业洞察- 政策影响- 风险提示3. 专业建议- 投资参考- 策略建议- 风险防范其他参数
# 配置参数
path /portfolio_code/reports/20240321 # 如果无此目录则会在运行后生成目录然后把pdf文件放进去
question 请分析这些报告并给出合理的投资权重分配方案。
api_key your_api_key# 获取分析结果
result get_ai_comments(character, path, question, api_key)
print(result)3.4 首次运行
首次运行会帮你创建目录你需要在提示的绝对地址放进pdf格式的研报即可识别并传输给长文本AI金融智能体。
3.5 运行结果展示 输出即为MD格式的文字由AI人设提示词中的格式限制。
4. 注意事项
4.1 文件要求
PDF文件必须是可读取的文本格式不支持扫描件或加密文件文件大小必须大于0文件编码必须正确
4.2 错误处理机制
系统提供了多层次的错误处理 目录级别 自动创建不存在的目录提供目录路径提示 文件级别 跳过无效文件详细的文件错误提示 API级别 处理API调用异常提供具体错误信息
4.3 最佳实践 路径管理 建议优先使用绝对路径运行代码可创建目录并提示目录路径确保目录权限正确 文件处理 预先验证PDF文件有效性控制单次处理文件数量目录下的所有pdf文件都会被传输给AI API使用 合理设置AI人设提示词工程构造清晰的问题
5. 总结
通过使用通义千问大模型我们实现了一个强大的PDF研报分析工具。该工具具有以下优势 功能完整 支持单文件和多文件分析提供灵活的API调用方式完整的错误处理机制 使用便捷 简单的函数调用清晰的参数设置友好的错误提示 可靠性高 自动处理异常情况资源自动清理稳定的运行表现
这个解决方案适合在实际项目中使用可以高效地处理大量PDF研究报告为投资决策提供有力支持。 基于本文代码思路金融资产组合模型的实战落地 7. 马科维茨资产组合模型金融研报AI长文本智能体(Qwen-Long)增强方案理论Python实战