diseasedemo / app.py
AkashMnd's picture
Update app.py
1fc962a
raw
history blame
15.4 kB
import base64
import gradio as gr
import requests
import google.generativeai as palm
import json
import os
oapi_key= os.getenv("openaiapi")
palm.configure(api_key=os.getenv("palmapi"))
model = 'models/text-bison-001'
temperature = 0.5
candidate_count = 1
top_k = 40
top_p = 0.95
max_output_tokens = 1024
text_b64 = 'WW91IGFyZSBhIFJpY2UgUGFkZHkgQWdyaWN1bHR1cmFsIFNjaWVudGlzdCAsIFlvdSB3aWxsIGJlIGdpdmVuIHRoZSBzdGF0ZSBvZiB0aGUgcGFkZHkoYSBwaWN0dXJlIGRlc2NyaXB0aW9uICkgYW5kIHlvdSB3aWxsIGhhdmUgdG8gYWR2aWNlIG9uIHRoZSBjb3JyZWN0IHJlbWVkeUlucHV0IC0gU2hlYXRoIFllcyBNZWFuaW5nIC0gIFRoZSBGYXJtZXIgaGFzIHNob3duIHlvdSBhIHBpY3R1cmUgb2YgU2hlYXRoIHBhcnQgb2YgdGhlIHBhZGR5IGFuZCBpdCBpcyBzdWZmZXJpbmcgZnJvbSBTaGVhdGggUm90ICwgYWR2aWNlIHRoZSBmYXJtZXIgb24gaG93IHRvIGZpeCB0aGlzSW5wdXQgLSBTaGVhdGggTm8gTWVhbmluZyAtIFRoZSBGYXJtZXIgaGFzIHNob3duIHlvdSBhIHBpY3R1cmUgb2YgU2hlYXRoIHBhcnQgb2YgdGhlIHBhZGR5IGFuZCBpdCBpcyBoZWFsdGh5ICxjb25ncmF0dWxhdGUgYW5kIGFkdmljZSBmYXJtZXIgb24gaG93IHRvIG1haW50YWluIGl0SW5wdXQgLSBMZWFmIFllcyBObyBObyBNZWFuaW5nIC0gVGhlIEZhcm1lciBoYXMgc2hvd24geW91IGEgcGljdHVyZSBvZiBMZWFmIHBhcnQgb2YgdGhlIHBhZGR5IGFuZCBpdCBpcyBoZWFsdGh5ICwgY29uZ3JhdHVsYXRlIHRoZSBmYXJtZXIgYW5kIGFkdmljZSB0aGUgZmFybWVyIG9uIGhvdyB0byBtYWludGFpbiBpdCBJbnB1dCAtIExlYWYgTm8gWWVzIE5vIE1lYW5pbmcgLSBUaGUgRmFybWVyIGhhcyBzaG93biB5b3UgYSBwaWN0dXJlIG9mIExlYWYgcGFydCBvZiB0aGUgcGFkZHkgYW5kIGl0IGhhcyBicm93biBzcG90cyBkaXNlYXNlICAsICBhZHZpY2UgdGhlIGZhcm1lciBvbiBob3cgdG8gcmVtZWR5IGl0IElucHV0IC0gTGVhZiBObyBZZXMgWWVzTWVhbmluZyAtIFRoZSBGYXJtZXIgaGFzIHNob3duIHlvdSBhIHBpY3R1cmUgb2YgTGVhZiBwYXJ0IG9mIHRoZSBwYWRkeSBhbmQgaXQgaGFzIGJyb3duIHNwb3RzIGRpc2Vhc2UgYW5kIEJsaWdodCBEaXNlYXNlICAsICBhZHZpY2UgdGhlIGZhcm1lciBvbiBob3cgdG8gcmVtZWR5IGl0IElucHV0IC0gTGVhZiBObyBObyBZZXNNZWFuaW5nIC0gVGhlIEZhcm1lciBoYXMgc2hvd24geW91IGEgcGljdHVyZSBvZiBMZWFmIHBhcnQgb2YgdGhlIHBhZGR5IGFuZCBpdCBoYXMgQmxpZ2h0IGRpc2Vhc2UgICwgIGFkdmljZSB0aGUgZmFybWVyIG9uIGhvdyB0byByZW1lZHkgaXQgSW5wdXQgLSBMZWFmIFllcyBObyBZZXMgTWVhbmluZyAtIFRoZSBGYXJtZXIgaGFzIHNob3duIHlvdSBhIHBpY3R1cmUgb2YgTGVhZiBwYXJ0IG9mIHRoZSBwYWRkeSBhbmQgaXQgbG9va3MgaGVhbHRoeSBidXQgaXQgaGFzIHllbGxvd2lzaCAgZWRnZXMgdGhhdCBtaWdodCBpbmRpY2F0ZSBibGlnaHQgLCAgYWR2aWNlIHRoZSBmYXJtZXIgb24gaG93IHRvIHJlbWVkeSBpdCBJbnB1dCAtIExlYWYgWWVzIFllcyBObyBNZWFuaW5nIC0gVGhlIEZhcm1lciBoYXMgc2hvd24geW91IGEgcGljdHVyZSBvZiBMZWFmIHBhcnQgb2YgdGhlIHBhZGR5IGFuZCBpdCBoYXMgYnJvd24gc3BvdHMgZGlzZWFzZSBidXQgYWxzbyBpcyBxdWl0ZSBncmVlbiBzbyBpdCBtaWdodCBiZSBoZWFsdGh5IGFuZCBqdXN0IGdvdCB0aGUgYnJvd24gc3BvdCBkaXNlYXNlICAsICBhZHZpY2UgdGhlIGZhcm1lciBvbiBob3cgdG8gcmVtZWR5IGl0IAppbnB1dDogU2hlYXRoIFllcwpvdXRwdXQ6IFRoZSBwYWRkeSBpcyBzdWZmZXJpbmcgZnJvbSBzaGVhdGggcm90LiAKVGhlIG1hbmFnZW1lbnQgcmVjb21tZW5kYXRpb25zIHByb3ZpZGVkIGZvciBzaGVhdGggcm90IGFyZSBhcyBmb2xsb3dzOgotU3ByYXkgTmVlbSBPaWw6IEFwcGx5IG5lZW0gb2lsIGF0IGEgY29uY2VudHJhdGlvbiBvZiA2MCBFQyAzJSB0byBoZWxwIG1hbmFnZSBzaGVhdGggcm90LgotU29pbCBBcHBsaWNhdGlvbiBvZiBHeXBzdW06IEFwcGx5IGd5cHN1bSBhdCBhIHJhdGUgb2YgMjAwIGtnL2FjcmUgaW4gdHdvIHNwbGl0cyB0byB0aGUgc29pbCwgYXMgdGhpcyBjYW4gaGVscCBpbiBtYW5hZ2luZyB0aGUgZGlzZWFzZS4KLVNwcmF5IE5TS0UgKE5lZW0sIFNvYXAsIGFuZCBLYXJhbmphIEVtdWxzaW9uKTogQXBwbHkgTlNLRSBhdCBhIGNvbmNlbnRyYXRpb24gb2YgNSUgdG8gaGVscCBjb250cm9sIHRoZSBzcHJlYWQgb2Ygc2hlYXRoIHJvdC4KLVNwcmF5IEhleGFjb25hem9sZTogQXBwbHkgSGV4YWNvbmF6b2xlIGF0IGEgY29uY2VudHJhdGlvbiBvZiA0MDAgbWwvYWNyZS4gVGhlIGZpcnN0IHNwcmF5IHNob3VsZCBiZSBkb25lIGF0IHRoZSBib290IGxlYWYgc3RhZ2UsIHdpdGggdGhlIHNlY29uZCBzcHJheSAxNSBkYXlzIGxhdGVyLgppbnB1dDogU2hlYXRoIE5vCm91dHB1dDogR3JlYXQgbmV3cyB0aGF0IHRoZSBzaGVhdGggaXMgaGVhbHRoeSEgVG8gbWFpbnRhaW4gdGhlIGhlYWx0aCBvZiB0aGUgc2hlYXRoIGFuZCBwcmV2ZW50IGZ1dHVyZSBpc3N1ZXMsIGl0J3MgZXNzZW50aWFsIGZvciB0aGUgZmFybWVyIHRvIGNvbnRpbnVlIHByYWN0aWNpbmcgZ29vZCBhZ3JpY3VsdHVyYWwgbWFuYWdlbWVudC4gVGhpcyBpbmNsdWRlcyBwcm9wZXIgZHJhaW5hZ2UgdG8gYXZvaWQgd2F0ZXJsb2dnaW5nLCBhZGVxdWF0ZSBzcGFjaW5nIGJldHdlZW4gcGxhbnRzLCBhbmQgcmVndWxhciBtb25pdG9yaW5nIGZvciBzaWducyBvZiBkaXNlYXNlLiBBZGRpdGlvbmFsbHksIGltcGxlbWVudGluZyBhIGJhbGFuY2VkIGZlcnRpbGl6YXRpb24gc2NoZWR1bGUgYW5kIGVuc3VyaW5nIHByb3BlciBpcnJpZ2F0aW9uIGNhbiBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIGhlYWx0aCBvZiB0aGUgcGFkZHkgc2hlYXRoLiBSZWd1bGFyIHNjb3V0aW5nIGZvciBwZXN0cyBhbmQgZGlzZWFzZXMgaXMgYWxzbyByZWNvbW1lbmRlZCB0byBjYXRjaCBhbnkgaXNzdWVzIGVhcmx5IGFuZCB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbi4KaW5wdXQ6IExlYWYgWWVzIE5vIE5vCm91dHB1dDogSXQncyBncmVhdCB0byBzZWUgdGhhdCB0aGUgcGFkZHkgbGVhdmVzIGFyZSBoZWFsdGh5LiBUbyBtYWludGFpbiB0aGVpciBoZWFsdGgsIHRoZSBmYXJtZXIgc2hvdWxkIGNvbnRpbnVlIHByYWN0aWNpbmcgZ29vZCBhZ3JpY3VsdHVyYWwgbWFuYWdlbWVudDoKLVByb3BlciBXYXRlciBNYW5hZ2VtZW50OiBFbnN1cmUgdGhlIHBhZGR5IGZpZWxkcyBoYXZlIHByb3BlciBkcmFpbmFnZSB0byBhdm9pZCB3YXRlcmxvZ2dpbmcsIGFuZCBtb25pdG9yIGlycmlnYXRpb24gdG8gcHJldmVudCBvdmVyd2F0ZXJpbmcuCi1CYWxhbmNlZCBGZXJ0aWxpemF0aW9uOiBJbXBsZW1lbnQgYSBiYWxhbmNlZCBmZXJ0aWxpemF0aW9uIHNjaGVkdWxlIHRvIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBudXRyaWVudHMgZm9yIGhlYWx0aHkgbGVhZiBkZXZlbG9wbWVudC4KLVJlZ3VsYXIgTW9uaXRvcmluZzogQ29udGludWUgdG8gbW9uaXRvciB0aGUgcGFkZHkgZmllbGRzIHJlZ3VsYXJseSBmb3IgYW55IHNpZ25zIG9mIHBlc3RzIG9yIGRpc2Vhc2VzLCBhcyBlYXJseSBkZXRlY3Rpb24gY2FuIGhlbHAgaW4gcHJldmVudGluZyBpc3N1ZXMgZnJvbSBzcHJlYWRpbmcuCi1DdWx0dXJhbCBQcmFjdGljZXM6IFByYWN0aWNlIGdvb2QgYWdyaWN1bHR1cmFsIHRlY2huaXF1ZXMgc3VjaCBhcyBwcm9wZXIgc3BhY2luZyBhbmQgdGltZWx5IGlycmlnYXRpb24gdG8gbWFpbnRhaW4gdGhlIGhlYWx0aCBvZiB0aGUgcGFkZHkgbGVhdmVzLgoKaW5wdXQ6IExlYWYgTm8gWWVzIFllcyAKb3V0cHV0OiBUaGUgcGFkZHkgbGVhdmVzIHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgYm90aCBicm93biBzcG90IGRpc2Vhc2UgYW5kIGJhY3RlcmlhbCBsZWFmIGJsaWdodC4gSGVyZSBhcmUgdGhlIG1hbmFnZW1lbnQgcmVjb21tZW5kYXRpb25zIHByb3ZpZGVkIGZvciB0aGVzZSBkaXNlYXNlczoKCkJyb3duIFNwb3QgRGlzZWFzZToKLU1ham9yIFN5bXB0b21zOiBDeWxpbmRyaWNhbCBvdmFsIGRhcmsgYnJvd24gc3BvdHMgd2l0aCBhIHllbGxvdyBoYWxvLiBJbiBhZHZhbmNlZCBjYXNlcywgdGhlIHNwb3RzIGNvYWxlc2NlIHRvZ2V0aGVyIGFuZCBkcnkuCl9NYW5hZ2VtZW50OiBSZWNvbW1lbmRlZCBmdW5naWNpZGVzIGluY2x1ZGUgRWRpZmVucGhvcyAoMjAwbWwvYWNyZSksIE1hbmNvemViICg1MDBnL2FjcmUpLCBvciBQcm9waW5lYiAoODAwZy9hY3JlKS4KCkJhY3RlcmlhbCBMZWFmIEJsaWdodCAoQkxCKToKLU1ham9yIFN5bXB0b21zOiBZZWxsb3ctY29sb3JlZCB3YXZ5IG1hcmdpbiB3aXRoIGEgemlnemFnIGFwcGVhcmFuY2Ugb24gdGhlIGxlYXZlcy4KLU1hbmFnZW1lbnQ6IFNwcmF5IDIwJSBmcmVzaCBjb3cgZHVuZyBleHRyYWN0IHR3aWNlLCBzdGFydGluZyBmcm9tIHRoZSBpbml0aWFsIGFwcGVhcmFuY2Ugb2YgdGhlIGRpc2Vhc2UgYW5kIHRoZW4gYXQgYSBmb3J0bmlnaHRseSBpbnRlcnZhbC4KCmlucHV0OiBMZWFmIE5vIFllcyBObyAKb3V0cHV0OiBUaGUgcGFkZHkgbGVhdmVzIHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgYm90aCBicm93biBzcG90IGRpc2Vhc2UgSGVyZSBhcmUgdGhlIG1hbmFnZW1lbnQgcmVjb21tZW5kYXRpb25zIHByb3ZpZGVkIGZvciB0aGlzIGRpc2Vhc2U6ClJlY29tbWVuZGF0aW9ucyBmb3IgbWFuYWdpbmcgYnJvd24gc3BvdCBkaXNlYXNlIGluIHBhZGR5IGxlYXZlczoKRnVuZ2ljaWRlIEFwcGxpY2F0aW9uOiBBcHBseSBhcHByb3ByaWF0ZSBmdW5naWNpZGVzIHRvIGNvbnRyb2wgdGhlIHNwcmVhZCBvZiBicm93biBzcG90IGRpc2Vhc2UuIENvbW1vbmx5IHVzZWQgZnVuZ2ljaWRlcyBmb3IgYnJvd24gc3BvdCBkaXNlYXNlIGluY2x1ZGUgRWRpZmVucGhvcywgTWFuY296ZWIsIG9yIFByb3BpbmViLgpQcm9wZXIgV2F0ZXIgTWFuYWdlbWVudDogRW5zdXJlIHByb3BlciBkcmFpbmFnZSB0byBhdm9pZCB3YXRlcmxvZ2dpbmcsIGFzIGV4Y2Vzc2l2ZSBtb2lzdHVyZSBjYW4gY29udHJpYnV0ZSB0byB0aGUgZGV2ZWxvcG1lbnQgYW5kIHNwcmVhZCBvZiBicm93biBzcG90IGRpc2Vhc2UKRmllbGQgU2FuaXRhdGlvbjogUmVtb3ZlIGFuZCBkZXN0cm95IGluZmVjdGVkIHBsYW50IGRlYnJpcyB0byBtaW5pbWl6ZSB0aGUgc291cmNlIG9mIHRoZSBkaXNlYXNlLgoKaW5wdXQ6IExlYWYgTm8gTm8gWWVzCm91dHB1dDogVGhlIHBhZGR5IGxlYXZlcyBzZWVtIHRvIGJlIGFmZmVjdGVkIGJ5IGJhY3RlcmlhbCBsZWFmIGJsaWdodC4gSGVyZSBhcmUgdGhlIG1hbmFnZW1lbnQgcmVjb21tZW5kYXRpb25zIHByb3ZpZGVkIGZvciB0aGlzIGRpc2Vhc2VzOgoKQmFjdGVyaWFsIExlYWYgQmxpZ2h0IChCTEIpOgotTWFqb3IgU3ltcHRvbXM6IFllbGxvdy1jb2xvcmVkIHdhdnkgbWFyZ2luIHdpdGggYSB6aWd6YWcgYXBwZWFyYW5jZSBvbiB0aGUgbGVhdmVzLgotTWFuYWdlbWVudDogU3ByYXkgMjAlIGZyZXNoIGNvdyBkdW5nIGV4dHJhY3QgdHdpY2UsIHN0YXJ0aW5nIGZyb20gdGhlIGluaXRpYWwgYXBwZWFyYW5jZSBvZiB0aGUgZGlzZWFzZSBhbmQgdGhlbiBhdCBhIGZvcnRuaWdodGx5IGludGVydmFsLgoKCmlucHV0OiBMZWFmIFllcyBZZXMgTm8Kb3V0cHV0OiBJdCdzIGdyZWF0IHRvIGhlYXIgdGhhdCB0aGUgcGFkZHkgbGVhdmVzIGFyZSBoZWFsdGh5LiBIb3dldmVyLCBzaW5jZSB0aGVyZSBhcmUgc29tZSBpbmRpY2F0aW9ucyBvZiBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHllbGxvd2lzaCBlZGdlcyB0aGF0IG1pZ2h0IGluZGljYXRlIGJsaWdodCwgaXQncyBpbXBvcnRhbnQgZm9yIHRoZSBmYXJtZXIgdG8gc3RheSB2aWdpbGFudCBhbmQgY29uc2lkZXIgcHJldmVudGl2ZSBtZWFzdXJlcyB0byBtYWludGFpbiB0aGUgaGVhbHRoIG9mIHRoZSBwYWRkeSBsZWF2ZXMuR2l2ZW4gdGhlIGNvbWJpbmF0aW9uIG9mIGhlYWx0aHkgYXBwZWFyYW5jZSBhbmQgdGhlIHByZXNlbmNlIG9mIHBvdGVudGlhbCB5ZWxsb3dpc2ggZWRnZXMgdGhhdCBtYXkgaW5kaWNhdGUgYmxpZ2h0LCBpdCdzIGFkdmlzYWJsZSBmb3IgdGhlIGZhcm1lciB0bzoKCk1vbml0b3IgY2xvc2VseSBmb3IgYW55IGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgYmxpZ2h0IHN5bXB0b21zLCBzdWNoIGFzIHRoZSB5ZWxsb3dpc2ggZWRnZXMsIGFuZCB0YWtlIHByZXZlbnRpdmUgYWN0aW9uIGlmIHRoZSBzeW1wdG9tcyBwcm9ncmVzcy4KCkltcGxlbWVudCBwcmV2ZW50aXZlIG1lYXN1cmVzIHN1Y2ggYXMgcHJvcGVyIHdhdGVyIG1hbmFnZW1lbnQsIGJhbGFuY2VkIGZlcnRpbGl6YXRpb24sIGFuZCByZWd1bGFyIGZpZWxkIG1vbml0b3JpbmcgdG8gcHJldmVudCBibGlnaHQgZGlzZWFzZS4KaW5wdXQ6IExlYWYgWWVzIE5vIFllcwpvdXRwdXQ6IEl0IHNlZW1zIHRoYXQgdGhlIHBhZGR5IGxlYXZlcyBhcmUgaGVhbHRoeSBidXQgYXJlIHNob3dpbmcgc2lnbnMgb2YgYmxpZ2h0IGRpc2Vhc2UuIFRvIGFkZHJlc3MgdGhpcyBpc3N1ZSwgdGhlIGZhcm1lciBzaG91bGQgY29uc2lkZXIgdGhlIGZvbGxvd2luZyByZW1lZGllczoKCkZ1bmdpY2lkZSBBcHBsaWNhdGlvbjogQXBwbHkgYXBwcm9wcmlhdGUgZnVuZ2ljaWRlcyB0byBjb250cm9sIHRoZSBzcHJlYWQgb2YgYmxpZ2h0IGRpc2Vhc2UuIFRoZSBkb2N1bWVudCByZWNvbW1lbmRzIHRoZSB1c2Ugb2Ygc3BlY2lmaWMgZnVuZ2ljaWRlcywgc3VjaCBhcyBDYXJiZW5kYXppbSBvciBNYW5jb3plYiwgdG8gbWFuYWdlIGJsaWdodCBkaXNlYXNlIGVmZmVjdGl2ZWx5LgpQcm9wZXIgV2F0ZXIgTWFuYWdlbWVudDogRW5zdXJlIHByb3BlciBkcmFpbmFnZSB0byBhdm9pZCB3YXRlcmxvZ2dpbmcsIGFzIGV4Y2Vzc2l2ZSBtb2lzdHVyZSBjYW4gY29udHJpYnV0ZSB0byB0aGUgZGV2ZWxvcG1lbnQgYW5kIHNwcmVhZCBvZiBibGlnaHQgZGlzZWFzZS4KRmllbGQgU2FuaXRhdGlvbjogUmVtb3ZlIGFuZCBkZXN0cm95IGluZmVjdGVkIHBsYW50IGRlYnJpcyB0byBtaW5pbWl6ZSB0aGUgc291cmNlIG9mIHRoZSBkaXNlYXNlLgppbnB1dDogTGVhZiBZZXMgWWVzIFllcyAKb3V0cHV0OiBQbGVhc2UgcHJvdmlkZSBUaGUgYXBwIHdpdGggYW5vdGhlciBwaWN0dXJlIHRha2VuIGZyb20gcG9zc2libHkgYSBkaWZmZXJlbnQgYW5nbGUgb3Igd2l0aCBiZXR0ZXIgbGlnaHRpbmcgLCBvciB1c2UgYSBkaWZmZXJlbnQgc2FtcGxlIGxlYWYKaW5wdXQ6' # @param {isTemplate: true}
stop_sequences_b64 = 'W10='
safety_settings_b64 = 'W3siY2F0ZWdvcnkiOiJIQVJNX0NBVEVHT1JZX0RFUk9HQVRPUlkiLCJ0aHJlc2hvbGQiOiJCTE9DS19MT1dfQU5EX0FCT1ZFIn0seyJjYXRlZ29yeSI6IkhBUk1fQ0FURUdPUllfVE9YSUNJVFkiLCJ0aHJlc2hvbGQiOiJCTE9DS19MT1dfQU5EX0FCT1ZFIn0seyJjYXRlZ29yeSI6IkhBUk1fQ0FURUdPUllfVklPTEVOQ0UiLCJ0aHJlc2hvbGQiOiJCTE9DS19NRURJVU1fQU5EX0FCT1ZFIn0seyJjYXRlZ29yeSI6IkhBUk1fQ0FURUdPUllfU0VYVUFMIiwidGhyZXNob2xkIjoiQkxPQ0tfTUVESVVNX0FORF9BQk9WRSJ9LHsiY2F0ZWdvcnkiOiJIQVJNX0NBVEVHT1JZX01FRElDQUwiLCJ0aHJlc2hvbGQiOiJCTE9DS19NRURJVU1fQU5EX0FCT1ZFIn0seyJjYXRlZ29yeSI6IkhBUk1fQ0FURUdPUllfREFOR0VST1VTIiwidGhyZXNob2xkIjoiQkxPQ0tfTUVESVVNX0FORF9BQk9WRSJ9XQ==' # @param {isTemplate: true}
# Convert the prompt text param from a bae64 string to a string.
text = base64.b64decode(text_b64).decode("utf-8")
# Convert the stop_sequences and safety_settings params from base64 strings to lists.
stop_sequences = json.loads(base64.b64decode(stop_sequences_b64).decode("utf-8"))
safety_settings = json.loads(base64.b64decode(safety_settings_b64).decode("utf-8"))
defaults = {
'model': model,
'temperature': temperature,
'candidate_count': candidate_count,
'top_k': top_k,
'top_p': top_p,
'max_output_tokens': max_output_tokens,
'stop_sequences': stop_sequences,
'safety_settings': safety_settings,
}
def encode_image(image_file):
with open(image_file.name, "rb") as img_file:
return base64.b64encode(img_file.read()).decode('utf-8')
def send_to_openai(image_file):
base64_image = encode_image(image_file)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {oapi_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Answer in only one of the following options - Leaf , Sheath , Question - You are given a picture of Rice Paddy which part of the Paddy Crop is prominently visible , Leaf should be the whole leaf , and Sheath Can be a little part of the Leaf and Should Show the Stem and Maybe Grains "
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
# Extract words from the assistant's response
assistant_response = response.json()['choices'][0]['message']['content']
words = assistant_response.split('\n')
checkresponse_lower = [word.lower() for word in words]
if "leaf" in checkresponse_lower:
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Answer in three words only, does the image uploaded have a healthy rice leaf - Yes or No , does the image uploaded have a rice leaf with Major (not small) circular spots - Yes or No , does the image uploaded have a rice leaf have a major yellowish discoloration in some areas (ignore spots) - Yes or No , DO NOT RESPOND IN MORE THAN THREE WORDS and ANSWER WITH COMMA IN THE MIDDLE OF THE WORDS WITH NO FULLSTOP "
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
elif "sheath" in checkresponse_lower:
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "ANSWER IN ONLY ONE WORD , does the sheath part of the paddy in the image have sheath rot ANSWER IN YES OR NO , NO FULLSTOP "
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
assistant_response = response.json()['choices'][0]['message']['content']
recognition = assistant_response.split('\n')
result_string = ' '.join(words + recognition)
response = palm.generate_text(
**defaults,
prompt=text + result_string
)
output_text = response.candidates[0]['output']
return output_text[8:]
iface = gr.Interface(
fn=send_to_openai,
inputs=["file"],
outputs=["text"],
title="Rice Leaf Disease Detection Demo Using GPT-4V(ision) + PaLM 2",
description="Made By Akash Mondal - https://github.com/akash-mondal | GPT-4Vision Paper - https://cdn.openai.com/papers/GPTV_System_Card.pdf | PaLM2 Paper - https://arxiv.org/pdf/2305.10403.pdf "
)
iface.launch(debug=True)