Source code for langchain_experimental.tabular_synthetic_data.openai

from typing import Any, Dict, Optional, Type, Union

from langchain.chains.openai_functions import create_structured_output_chain
from langchain.pydantic_v1 import BaseModel
from langchain.schema import BaseLLMOutputParser, BasePromptTemplate
from langchain_community.chat_models import ChatOpenAI
from langchain_core.prompts import PromptTemplate

from langchain_experimental.tabular_synthetic_data.base import SyntheticDataGenerator

OPENAI_TEMPLATE = PromptTemplate(input_variables=["example"], template="{example}")


[docs]def create_openai_data_generator( output_schema: Union[Dict[str, Any], Type[BaseModel]], llm: ChatOpenAI, prompt: BasePromptTemplate, output_parser: Optional[BaseLLMOutputParser] = None, **kwargs: Any, ) -> SyntheticDataGenerator: """ 创建一个针对OpenAI模型定制的SyntheticDataGenerator实例。 此函数创建一个LLM链,设计用于基于提供的模式(schema)、语言模型(llm)和提示模板(prompt)的结构化输出。然后使用生成的链来实例化并返回一个SyntheticDataGenerator。 Args: output_schema (Union[Dict[str, Any], Type[BaseModel]]): 预期输出的模式(schema)。可以是表示有效JsonSchema的字典,也可以是Pydantic BaseModel类。 llm (ChatOpenAI): 要使用的OpenAI语言模型。 prompt (BasePromptTemplate): 用于生成提示的模板。 output_parser (Optional[BaseLLMOutputParser], optional): 处理模型输出的解析器。如果未提供,则将从函数类型中推断默认值。 **kwargs: 要传递给`create_structured_output_chain`的其他关键字参数。 Returns: SyntheticDataGenerator: 使用构建的链设置的数据生成器实例。 Usage: 要生成结构化输出的合成数据,首先定义所需的输出模式(schema)。然后,使用此函数创建SyntheticDataGenerator实例。获取生成器后,可以利用其方法生成所需的合成数据。 """ # Create function calling chain to ensure structured output chain = create_structured_output_chain( output_schema, llm, prompt, output_parser=output_parser, **kwargs ) # Create the SyntheticDataGenerator instance with the created chain generator = SyntheticDataGenerator(template=prompt, llm_chain=chain) return generator