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