ExtractApp / extract_app.py
cmagganas's picture
Rename tools.py to extract_app.py
f34acee
raw
history blame
1.39 kB
# -*- coding: utf-8 -*-
# Imports
import asyncio
import os
import openai
from typing import List, Optional
from pydantic import BaseModel, Field
from langchain.chains.openai_functions.extraction import create_extraction_chain_pydantic
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.pydantic_v1 import BaseModel
from langchain.utils.openai_functions import convert_pydantic_to_openai_function
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.environ['OPENAI_API_KEY']
# App
# Pydantic is an easy way to define a schema
class Person(BaseModel):
"""Information about people to extract."""
name: str
age: Optional[int] = None
# Main function to extract information
def extract_information():
# Make sure to use a recent model that supports tools
llm = ChatOpenAI(model="gpt-3.5-turbo-1106")
return create_extraction_chain_pydantic(Person, llm)
if __name__ == "__main__":
text = "My name is John and I am 20 years old. My name is sally and I am 30 years old."
chain = extract_information()
print(chain.invoke({"input": text})["text"])
async def extract_information_async(message: str):
return chain.invoke({"input": message})["text"]
async def main():
res = await extract_information_async(text)
print(res)
asyncio.run(main())