buhe / langchain-swift

🚀 LangChain for Swift. Optimized for iOS, macOS, watchOS (part) and visionOS.(beta)
https://buhe.dev
Apache License 2.0
317 stars 33 forks source link

[Feature Request] Data Extraction #3

Open efremidze opened 1 year ago

efremidze commented 1 year ago

I would like to request the addition of support for Data Extraction using Langchain like kor. This would help users extract structured data from text.

from langchain.chat_models import ChatOpenAI
from kor import create_extraction_chain, Object, Text

llm = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    temperature=0,
    max_tokens=2000,
    frequency_penalty=0,
    presence_penalty=0,
    top_p=1.0,
)

schema = Object(
    id="player",
    description=(
        "User is controlling a music player to select songs, pause or start them or play"
        " music by a particular artist."
    ),
    attributes=[
        Text(
            id="song",
            description="User wants to play this song",
            examples=[],
            many=True,
        ),
        Text(
            id="album",
            description="User wants to play this album",
            examples=[],
            many=True,
        ),
        Text(
            id="artist",
            description="Music by the given artist",
            examples=[("Songs by paul simon", "paul simon")],
            many=True,
        ),
        Text(
            id="action",
            description="Action to take one of: `play`, `stop`, `next`, `previous`.",
            examples=[
                ("Please stop the music", "stop"),
                ("play something", "play"),
                ("play a song", "play"),
                ("next song", "next"),
            ],
        ),
    ],
    many=False,
)

chain = create_extraction_chain(llm, schema, encoder_or_encoder_class='json')
chain.run("play songs by paul simon and led zeppelin and the doors")['data']
{'player': {'artist': ['paul simon', 'led zeppelin', 'the doors']}}
buhe commented 1 year ago

Thanks, I'll take a look.

buhe commented 1 year ago

On iOS, how scenes or apps use it, thank you.

efremidze commented 1 year ago

App makes a request to extract data from text. It would be zero shot.

buhe commented 1 year ago

Can you help contribute to this requirement? If there is anything I need to change, please feel free to let me know.