Package: bc-en-de-coder
BC-EnDeCoderBC-EnDeCoder is a Python library that provides a secure way to encode and decode data for use with Large Language Models (LLM). The library allows you to protect sensitive information by passing a fake dummy value, which is then encoded and decoded to and from its original form after receiving a response from the LLM.FeaturesSecure Encoding and Decoding:Protect your sensitive data by encoding it with a fake dummy value and decoding it back to the original form after interacting with an LLM.Easy Integration:Simple and easy-to-use functions for encoding and decoding data, making it convenient to integrate into your projects.Customizable Encoding Parameters:Fine-tune the encoding process with customizable parameters to suit your specific use case.InstallationTo install BC-EnDeCoder, you can use the following pip command:pipinstallbc-en-de-coderHow it WorksBC-EnDeCoder facilitates a secure interaction with LLMs through a three-step process:Encoding with a Dummy Value:Sensitive data is encoded using a fake value, providing an added layer of security during transmission to an LLM.Interaction with LLM:The encoded data is then passed to the LLM for analysis or processing.Decoding the Response:Upon receiving the LLM's response, BC-EnDeCoder decodes it, revealing the original information without compromising its security.Encoding and Decoding values in stringEncode and decode values in string using theencode_str()anddecode_str()methods.frombc_endecoder.replaceimportBaseCoderbc=BaseCoder()text='''This is a dummy text with value 200,100,150,250.We need to protect these values.'''encoded_text,encodings=bc.encode_str(text)#encode_str takes 1 paramter which is the text and returns the encoded text and encodingprint("Encoded Text :\n",encoded_text)## encoded_text can be passed to GPT and after getting back the response it will be decoded using decode_str() methodoriginal_text=bc.decode_str(encoded_text,encodings)#decode_str takes 2 parameters which are the encoded_text and encoding and returns the original textprint("\nOriginal Text :\n",original_text)OutputEncodedText:Thisisadummytextwithvalue4858416350,7636580946,0858875814,8301435677.Weneedtoprotectthesevalues.OriginalText:Thisisadummytextwithvalue200,100,150,250.Weneedtoprotectthesevalues.Encoding and Decoding values in DataframeEncode and decode values in Dataframe using theencode_df()anddecode_df()methods.frombc_endecoder.replaceimportBaseCoderimportpandasaspdimportnumpyasnpbc=BaseCoder()data={'Name':['Alice','Bob','Charlie','David','Eva'],'Age':[25,30,22,35,28],'City':['New York','San Francisco','Los Angeles','Chicago','Miami'],'Salary':[60000,80000,55000,90000,70000]}df=pd.DataFrame(data)encoded_df,encoding=bc.encode_df(df)#encode_df takes 1 paramter which is Dataframe and returns the encoded dataframe and encodingsprint("Encoded_df :\n",encoded_df)## encoded_df can be passed to GPT and after getting back the response it will be decoded using decode_df() methodoriginal_df=bc.decode_df(encoded_df,encoding)#decode_str takes 2 parameters which are the encoded_df and encoding and returns the original dfprint("\nOriginal_df :\n",original_df)OutputEncoded_df:NameAgeCitySalary0Alice8623770624NewYork01977057891Bob5223314994SanFrancisco97439124202Charlie1795473060LosAngeles89821454073David6439787181Chicago66182330874Eva4699492207Miami6680877680Original_df:NameAgeCitySalary0Alice25NewYork600001Bob30SanFrancisco800002Charlie22LosAngeles550003David35Chicago900004Eva28Miami70000Encoding and Decoding values with a ratio in Dataframe, Json or StringEncode and decode values with a ratio in Dataframe, Json or String using theencode_df_ratio()anddecode_df_ratio()methods.frombc_endecoder.replaceimportBaseCoderimportpandasaspdimportnumpyasnpbc=BaseCoder()json_data={"key1":10,"key2":20,"key3":"Hello","key4":3.14,"key5":[1,2,3],"key6":{"nested_key":"nested_value"},"key8":"2022-01-01","key9":None,"key10":{"sub_key1":5,"sub_key2":"world"},"key11":[4.5,6.7,8.9],"key12":False,"key13":"42","key14":["apple","banana","cherry"],"key15":{"nested_key2":[1,2,3]},"key16":7.77,"key17":"test","key18":{"sub_key3":"value3","sub_key4":10},"key19":[True,False],"key20":12345}ratio=56#this is the ratio for which we want to encode the data, it can be any number except 0 and 1encoded_data=bc.encode_in_ratio(json_data,ratio)#encode_in_ratio takes 2 paramter which is Data and the ratio number, and returns the encoded dataprint("Encoded data :\n",encoded_data)## encoded_data can be passed to GPT and after getting back the response it will be decoded using decode_df() methodoriginal_data=bc.decode_in_ratio(encoded_data,ratio)#decode_str takes 2 parameters which are the encoded_data and encoding and returns the original jsonprint("Original data :\n",original_data)OutputEncodeddata:{'key1':560,'key2':1120,'key3':'Hello','key4':175.84,'key5':[56,112,168],'key6':{'nested_key':'nested_value'},'key8':'2022-01-01','key9':None,'key10':{'sub_key1':280,'sub_key2':'world'},'key11':[252.0,375.2,498.40000000000003],'key12':0,'key13':'42','key14':['apple','banana','cherry'],'key15':{'nested_key2':[56,112,168]},'key16':435.12,'key17':'test','key18':{'sub_key3':'value3','sub_key4':560},'key19':[56,0],'key20':691320}Originaldata:{'key1':10.0,'key2':20.0,'key3':'Hello','key4':3.14,'key5':[1.0,2.0,3.0],'key6':{'nested_key':'nested_value'},'key8':'2022-01-01','key9':None,'key10':{'sub_key1':5.0,'sub_key2':'world'},'key11':[4.5,6.7,8.9],'key12':0.0,'key13':'42','key14':['apple','banana','cherry'],'key15':{'nested_key2':[1.0,2.0,3.0]},'key16':7.7700000000000005,'key17':'test','key18':{'sub_key3':'value3','sub_key4':10.0},'key19':[1.0,0.0],'key20':12345.0}Encoding and Decoding values and passing it to OPENAIPass your data to OPENAI without leaking your sensitive data.frombc_endecoder.replaceimportBaseCoderfrombc_endecoder.extractimportextract_pdffromopenaiimportOpenAIfromdotenvimportload_dotenvimportosload_dotenv()defgpt_call(data):client=OpenAI(api_key=os.getenv("OPENAI_API_KEY"))response1=client.chat.completions.create(messages=[{"role":"system","content":f"""You are a Convert the given{data}to csv format"""},{"role":"user","content":'''Just convert the given text into csv format, and return the output'''}],model="gpt-4",temperature=0)output=response1.choices[0].message.contentreturnoutputbc=BaseCoder()data=extract_pdf("Dummy.pdf")# Extracting PDF data using the function from bc_endecoder packageprint('PDF data :\n',data)encoded_data,encodings=bc.encode_str(data)# Encoding the data and get the encoded data with their encodingsprint('\nEncoded Data from Package :\n',encoded_data)gpt_response=gpt_call(encoded_data)# Calling GPT-4 API to get the response from the encoded dataprint('\nGPT Response :\n'+gpt_response)decoded_data=bc.decode_str(gpt_response,encodings)# Decoding the encoded data and get your original dataprint('\nDecoding the Encoded Values :\n',decoded_data)Download theDummy.pdffile used in the above codeOutputPDFdata:BlenheimChalcotMumbaiAndheri87656Phonenumber-9878787878Date:23-02-2024InvoiceStatementHSBCbankMumbaiAndheri787656AccountHolder:AbhishekKumarSinghAccountNumber:438743894378StatementPeriod:23-01-2024to15-01-2024----------------------------------------------------------------------------------------------------------|Date|Description|Withdrawals|Deposits|Balance||------------|------------------|------------------|--------------|-------------||2023-01-01|OpeningBalance|-|$10,000|$10,000||2023-01-05|Paymentreceived|-|$5,000|$15,000||2023-01-10|GroceryShopping|$200|-|$14,800||2023-01-15|SalaryDeposit|-|$8,000|$22,800||2023-01-25|UtilityBill|$100|-|$22,700||2023-01-31|MonthlyFee|$10|-|$22,690|----------------------------------------------------------------------------------------------------------EndingBalance:$22,690ThankyouforchoosingHSBCBank.Ifyouhaveanyquestions,pleasecontactourcustomersupportat8927348737.EncodedDatafromPackage:BlenheimChalcotMumbaiAndheri401363147298Phonenumber-906449033591Date:338480365517-280971266531-390031187131InvoiceStatementHSBCbankMumbaiAndheri466271837735AccountHolder:AbhishekKumarSinghAccountNumber:300534140052StatementPeriod:338480365517-170754211816-390031187131to939324337053-170754211816-390031187131----------------------------------------------------------------------------------------------------------|Date|Description|Withdrawals|Deposits|Balance||------------|------------------|------------------|--------------|-------------||120522004913-170754211816-170754211816|OpeningBalance|-|$237668946781,294663348315|$237668946781,294663348315||120522004913-170754211816-027682990558|Paymentreceived|-|$877646736189,294663348315|$939324337053,294663348315||120522004913-170754211816-237668946781|GroceryShopping|$905935621694|-|$255360822746,100094946280||120522004913-170754211816-939324337053|SalaryDeposit|-|$511972984598,294663348315|$804636746266,100094946280||120522004913-170754211816-755648715445|UtilityBill|$068679160933|-|$804636746266,517699474565||120522004913-170754211816-243591450716|MonthlyFee|$237668946781|-|$804636746266,559182488649|----------------------------------------------------------------------------------------------------------EndingBalance:$804636746266,559182488649ThankyouforchoosingHSBCBank.Ifyouhaveanyquestions,pleasecontactourcustomersupportat550092238315.GPTResponse:"Date","Description","Withdrawals","Deposits","Balance""120522004913-170754211816-170754211816","Opening Balance","-","$237668946781,294663348315","$237668946781,294663348315""120522004913-170754211816-027682990558","Payment received","-","$877646736189,294663348315","$939324337053,294663348315""120522004913-170754211816-237668946781","Grocery Shopping","$905935621694","-","$255360822746,100094946280""120522004913-170754211816-939324337053","Salary Deposit","-","$511972984598,294663348315","$804636746266,100094946280""120522004913-170754211816-755648715445","Utility Bill","$068679160933","-","$804636746266,517699474565""120522004913-170754211816-243591450716","Monthly Fee","$237668946781","-","$804636746266,559182488649"DecodingtheEncodedValues:"Date","Description","Withdrawals","Deposits","Balance""2023-01-01","Opening Balance","-","$10,000","$10,000""2023-01-05","Payment received","-","$5,000","$15,000""2023-01-10","Grocery Shopping","$200","-","$14,800""2023-01-15","Salary Deposit","-","$8,000","$22,800""2023-01-25","Utility Bill","$100","-","$22,700""2023-01-31","Monthly Fee","$10","-","$22,690"Download the above response by clickinghere