11from langchain .chat_models import ChatOpenAI
2- from langchain .chains import RetrievalQA
3- from langchain .document_loaders import WebBaseLoader
4- from langchain .embeddings .openai import OpenAIEmbeddings
5- from langchain .llms import OpenAI
6- from langchain .text_splitter import CharacterTextSplitter
7- from langchain .vectorstores import FAISS
8-
9- loader = WebBaseLoader ("https://en.wikipedia.org/wiki/Tea" )
10- documents = loader .load ()
11- text_splitter = CharacterTextSplitter (chunk_size = 1000 , chunk_overlap = 0 )
12- texts = text_splitter .split_documents (documents )
13-
14- embeddings = OpenAIEmbeddings ()
15- docsearch = FAISS .from_documents (texts , embeddings )
16-
17- qa = RetrievalQA .from_chain_type (llm = OpenAI (), chain_type = "stuff" , retriever = docsearch .as_retriever ())
18-
19- while True :
20- query = input ("Ask a question about tea\n " )
21- print (qa .run (query ))
2+ from langchain .prompts .chat import (
3+ PromptTemplate
4+ )
5+ from langchain .output_parsers import PydanticOutputParser
6+ from pydantic import BaseModel , Field
7+
8+
9+ class Furniture (BaseModel ):
10+ type : str = Field (description = "the type of furniture" )
11+ style : str = Field (description = "style of the furniture" )
12+ colour : str = Field (description = "colour" )
13+
14+ furniture_request = "I'd like a blue mid century chair"
15+
16+ parser = PydanticOutputParser (pydantic_object = Furniture )
17+
18+ prompt = PromptTemplate (
19+ template = "Answer the user query.\n {format_instructions}\n {query}\n " ,
20+ input_variables = ["query" ],
21+ partial_variables = {
22+ "format_instructions" : parser .get_format_instructions ()},
23+ )
24+
25+ _input = prompt .format_prompt (query = furniture_request )
26+
27+ model = ChatOpenAI ()
28+ output = model .predict (_input .to_string ())
29+
30+ parsed = parser .parse (output )
31+ print (parsed .colour )
0 commit comments