You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LlamaParse用parse_page_with_agent时system_prompt无效,求正确传参方式

问题描述

我在Python中使用LlamaParse(Llama Cloud)将PDF转换为Markdown,希望通过提示词控制输出格式(比如强制所有文本大写、提升所有Markdown标题层级),但设置system_prompt或system_prompt_append参数都没有效果。如果这个场景支持提示词配置,请问如何正确传递提示词来修改生成的Markdown内容?

代码示例:

from pathlib import Path
from llama_parse import LlamaParse

SYSTEM_PROMPT = """You post-process the parsed Markdown:
- Convert ALL text to UPPERCASE.
- Increase every Markdown heading level by one (# -> ##, ## -> ###, etc.).
"""

def setup_parser(api_key: str) -> LlamaParse:
    parser = LlamaParse(
        api_key=api_key,
        parse_mode="parse_page_with_agent",
        model="gemini-2.5-flash",
        high_res_ocr=True,
        adaptive_long_table=True,
        outlined_table_extraction=True,
        output_tables_as_HTML=True,
        page_separator="\n\n",
        # I tried each of these separately and together:
        system_prompt=SYSTEM_PROMPT,
        system_prompt_append=SYSTEM_PROMPT,
    )
    return parser

async def convert_pdf_to_markdown_async(parser: LlamaParse, pdf_path: Path, out_dir: Path) -> bool:
    try:
        result = await parser.aparse(str(pdf_path))
        docs = result.get_markdown_documents(split_by_page=True)
        md = "\n\n".join(doc.text for doc in docs)
        out_dir.mkdir(parents=True, exist_ok=True)
        (out_dir / (pdf_path.stem + "_llama.md")).write_text(md, encoding="utf-8")
        return True
    except Exception as e:
        print(f"Error during parsing: {e}")
        return False
解决方案

LlamaParse的parse_mode="parse_page_with_agent"模式下,system_prompt和system_prompt_append参数不生效,因为该模式的提示词逻辑由专门的代理参数控制。以下是两种可行的解决方式:

方法1:使用agent_prompt参数(适配代理解析模式)

当使用parse_page_with_agent模式时,需通过agent_prompt传递自定义格式要求,该参数是控制解析代理行为的专属入口。

修改后的初始化代码:

def setup_parser(api_key: str) -> LlamaParse:
    parser = LlamaParse(
        api_key=api_key,
        parse_mode="parse_page_with_agent",
        model="gemini-2.5-flash",
        high_res_ocr=True,
        adaptive_long_table=True,
        outlined_table_extraction=True,
        output_tables_as_HTML=True,
        page_separator="\n\n",
        agent_prompt="""
        你需要完成PDF到Markdown的解析,并执行以下后处理操作:
        - 将所有文本转换为大写。
        - 将每个Markdown标题的层级提升一级(# -> ##, ## -> ###,以此类推)。
        请严格按照要求输出最终的Markdown内容。
        """
    )
    return parser

方法2:基础解析模式+本地后处理

如果代理模式的提示词仍然不可控,可以切换到parse_mode="markdown"基础解析模式,再在本地对生成的Markdown进行格式修正,这种方式稳定性更高。

示例代码:

from pathlib import Path
from llama_parse import LlamaParse
import re

def setup_parser(api_key: str) -> LlamaParse:
    parser = LlamaParse(
        api_key=api_key,
        parse_mode="markdown",
        high_res_ocr=True,
        adaptive_long_table=True,
        outlined_table_extraction=True,
        output_tables_as_HTML=True,
        page_separator="\n\n"
    )
    return parser

def postprocess_markdown(md_content: str) -> str:
    # 提升所有标题层级
    md_content = re.sub(r'^(#+)', r'\1#', md_content, flags=re.MULTILINE)
    # 转换文本为大写(保留HTML表格结构不修改)
    parts = re.split(r'(<table.*?</table>)', md_content, flags=re.DOTALL)
    processed_parts = []
    for part in parts:
        if part.startswith('<table'):
            processed_parts.append(part)
        else:
            processed_parts.append(part.upper())
    return ''.join(processed_parts)

async def convert_pdf_to_markdown_async(parser: LlamaParse, pdf_path: Path, out_dir: Path) -> bool:
    try:
        result = await parser.aparse(str(pdf_path))
        docs = result.get_markdown_documents(split_by_page=True)
        md = "\n\n".join(doc.text for doc in docs)
        # 应用本地后处理
        processed_md = postprocess_markdown(md)
        out_dir.mkdir(parents=True, exist_ok=True)
        (out_dir / (pdf_path.stem + "_llama.md")).write_text(processed_md, encoding="utf-8")
        return True
    except Exception as e:
        print(f"解析过程中出错:{e}")
        return False

关键说明

  • parse_page_with_agent模式依赖LLM代理完成解析,agent_prompt是控制该代理行为的正确参数,system_prompt仅适用于非代理的基础解析模式。
  • 本地后处理的方式不受Llama Cloud端提示词逻辑限制,适合对格式有严格要求的场景。

内容的提问来源于stack exchange,提问作者Andjela Mihajlovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:20:08