Skip to main content

A library for transforming unstructured text into structured data without context/mappings using ChatGPT.

Project description

TransformGPT

TransformGPT is a python library for interpreting unstructured (or structured) data into Python objects using ChatGPT. Given a Python class hierarchy, it can take arbitrary data and structure in into the class hierarchy as a series of objects. This is useful for convertung natural language into structured data, or for converting one data type into another without specifying the mapping schema.

Installation:

pip install transformgpt

Optional:

Set an environment variable called OpenAIAPI-Token to your OpenAI API token.

Command line:

usage: transformgpt [-h]
                    [-k KEY]
                    [-m MODEL]
                    [-t TEMPERATURE]
                    description

KEY: OpenAI API Token if it's not set as an environment variable.

MODEL: OpenAI Model, defaults to 'gpt-3.5-turbo'

TEMPERATURE: Temperature for the ChatCompletion, defaults to 0, increase towards 1 to make the answers more creative

Description: A description of how you want the data to be transformed.

Takes input from STDIN and returns on STDOUT the transformed data.

Example:

> echo "Hello World.\nHow are you today?\nI am fine.\nIf you don't respond I will blackmail you." | transformgpt "An object with the fields original_message, intent, and response, where intent is one of greeting, inquiry, response, threat, informative."    

Yields:

- original_message: "Hello World."
  intent: greeting
  response: "Hi there!"

- original_message: "How are you today?"
  intent: inquiry
  response: "I'm doing well, thank you. How about 
you?"

- original_message: "I am fine."
  intent: response
  response: "Glad to hear that!"

- original_message: "If you don't respond I will blackmail you."
  intent: threat
  response: "I'm sorry, I didn't mean to ignore you. Is there something you need help with?"

Python usage:

import transformgpt
import openai
import os

openai.api_key = "YOUR OPENAI TOKEN"
transformer = transformgpt.TransformGPT(openai.ChatCompletion)

class Message:
    def __init__(self, message: str, data : dict[str, str]):
        self.message = message
        self.data = data

incoming_message = "The message is tell Joey Tracy is cheating on him with maid. The data to include is Orange is the new black, and the only way to get the job done is to do it yourself."

print(transformer.transform_string(incoming_message, Message))

Yields:

Message(message="Tell Joey Tracy is cheating on him with the maid.", data={"Orange": "The new black.", "The only way to get the job done": "Do it yourself."})

Datalasses/Nested Structures

It handles @dataclasses, and nested class hierarcharies as well:

from __future__ import annotations
from dataclasses import dataclass
import dataclasses
from typing import List, Optional
import openai
import os
import transformgpt
import yaml

openai.api_key = "YOUR OPENAI TOKEN"
transformer = transformgpt.TransformGPT(openai.ChatCompletion)

@dataclass
class MessageClassification:
  original_message:str
  message_part:str
  intent:Optional[str] = None
  categories:List[str] = dataclasses.field(default_factory=list)
  parameters:List[str] = dataclasses.field(default_factory=list)
  reply:Optional[str] = None
  justifications_for_reply:List[Justification] = dataclasses.field(default_factory=list)
  follow_up_items:List[MessageClassification] = dataclasses.field(default_factory=list)

@dataclass
class Justification:
    subject:Optional[str] = None
    object:Optional[str] = None
    intent:Optional[str] = None
    action:Optional[str] = None
    description:Optional[str] = None

incoming_message = "The message is tell Joey Tracy is cheating on him with maid. The data to include is Orange is the new black, and the only way to get the job done is to do it yourself."

print(yaml.dump(transformer.transform_string(incoming_message, MessageClassification)))

Yields:

- !!python/object:__main__.MessageClassification
  categories:
  - Relationships
  - Infidelity
  follow_up_items:
  - !!python/object:__main__.MessageClassification
    categories:
    - Entertainment
    - Motivation
    follow_up_items: []
    intent: null
    justifications_for_reply:
    - !!python/object:__main__.Justification
      action: null
      description: Orange is the new black is a popular TV show.
      intent: null
      object: null
      subject: null
    - !!python/object:__main__.Justification
      action: null
      description: Doing it yourself is the best way to ensure it gets done right.
      intent: null
      object: null
      subject: null
    message_part: The data to include is Orange is the new black, and the only way
      to get the job done is to do it yourself.
    original_message: The data to include is Orange is the new black, and the only
      way to get the job done is to do it yourself.
    parameters: []
    reply: null
  intent: null
  justifications_for_reply:
  - !!python/object:__main__.Justification
    action: null
    description: null
    intent: Cheating
    object: Joey
    subject: Tracy
  - !!python/object:__main__.Justification
    action: Involved in cheating
    description: null
    intent: null
    object: null
    subject: Maid
  message_part: Tell Joey Tracy is cheating on him with maid.
  original_message: The message is tell Joey Tracy is cheating on him with maid.
  parameters: []
  reply: null

It also supports transforming one object into another:

result = transformer.transform_object(myListOfObjects, MyDataTypeToTransformInto) #Returns a list[MyDataTypeToTransformInto]

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

transformgpt-0.1.3.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

transformgpt-0.1.3-py2.py3-none-any.whl (10.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file transformgpt-0.1.3.tar.gz.

File metadata

  • Download URL: transformgpt-0.1.3.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for transformgpt-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b3ef4708dcbed41af1cc95e61d8e752a8673c2da671f82d487b2f7826d17c5ca
MD5 a053885d992c66fe5de18555a36fa141
BLAKE2b-256 aac08185e542b709207f2b62dc8e346f737d0a37b9f901525424cf58497069de

See more details on using hashes here.

File details

Details for the file transformgpt-0.1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for transformgpt-0.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7b388b220d3ec7ecbbc0b9baad3ccbee812620f13d981e3632c643ec84e95189
MD5 cba5803349f691f818b3433ea0127313
BLAKE2b-256 c49ccec6b6825e165d20502d5e5dab1ed13f7a295e60a8b49c8fbaef68409bb9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page