from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field
# 替换后
from typing import List, Optional
class ChunkMetadata(BaseModel):
summary: str = Field(description="1-2句话总结这个块的内容")
keywords: List[str] = Field(description="5-7个关键词")
hypothetical_questions: List[str] = Field(description="这个块能回答什么问题")
table_summary: Optional[str] = Field(description="如果是表格,用自然语言描述")
# 用结构化输出,比解析文本可靠多了
enrichment_llm = ChatOpenAI( temperature=0,base_url="http://xxxx/v1",
api_key='empty',
model="qwen3_vl").with_structured_output(ChunkMetadata)
import asyncio
semaphore = asyncio.Semaphore(10)
# print(enrichment_llm.invoke("1. 2023年1月1日,xxx在北京举行。2. 2023年1月1日,xxx二十届").model_dump())
print(enrichment_llm.ainvoke("1. 2023年1月1日,xxxxx会议在北京举行。2. 2023年1月1日,xxx第二十届").model_dump())