File size: 4,221 Bytes
87c3140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import os, sys, inspect, json, time

# currentdir = os.path.dirname(os.path.abspath(
#     inspect.getfile(inspect.currentframe())))
# parentdir = os.path.dirname(currentdir)
# sys.path.append(parentdir)

# from prompts import PROMPT_PaLM_UMICH_skeleton_all_asia, PROMPT_PaLM_OCR_Organized, PROMPT_PaLM_Redo
# from LLM_PaLM import create_OCR_analog_for_input, num_tokens_from_string

'''
https://docs.ai21.com/docs/python-sdk-with-amazon-bedrock


https://techcommunity.microsoft.com/t5/ai-machine-learning-blog/falcon-llms-in-azure-machine-learning/ba-p/3876847
https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/huggingface/inference/text-generation-streaming/text-generation-streaming-online-endpoint.ipynb
https://ml.azure.com/registries/HuggingFace/models/tiiuae-falcon-40b-instruct/version/12?tid=e66e77b4-5724-44d7-8721-06df160450ce#overview
https://azure.microsoft.com/en-us/products/machine-learning/
'''



# from azure.ai.ml import MLClient
# from azure.identity import (
#     DefaultAzureCredential,
#     InteractiveBrowserCredential,
#     ClientSecretCredential,
# )
# from azure.ai.ml.entities import AmlCompute

# try:
#     credential = DefaultAzureCredential()
#     credential.get_token("https://management.azure.com/.default")
# except Exception as ex:
#     credential = InteractiveBrowserCredential()

# # connect to a workspace
# workspace_ml_client = None
# try:
#     workspace_ml_client = MLClient.from_config(credential)
#     subscription_id = workspace_ml_client.subscription_id
#     workspace = workspace_ml_client.workspace_name
#     resource_group = workspace_ml_client.resource_group_name
# except Exception as ex:
#     print(ex)
#     # Enter details of your workspace
#     subscription_id = "<SUBSCRIPTION_ID>"
#     resource_group = "<RESOURCE_GROUP>"
#     workspace = "<AML_WORKSPACE_NAME>"
#     workspace_ml_client = MLClient(
#         credential, subscription_id, resource_group, workspace
#     )
# # Connect to the HuggingFaceHub registry
# registry_ml_client = MLClient(credential, registry_name="HuggingFace")
# print(registry_ml_client)

'''
def OCR_to_dict_Falcon(logger, OCR, VVE):
    # Find a similar example from the domain knowledge
    domain_knowledge_example = VVE.query_db(OCR, 4)
    similarity = VVE.get_similarity()
    domain_knowledge_example_string = json.dumps(domain_knowledge_example)

    try:
        logger.info(f'Length of OCR raw -- {len(OCR)}')
    except:
        print(f'Length of OCR raw -- {len(OCR)}')

    # Create input: output: for Falcon
    # Assuming Falcon requires a similar structure as PaLM
    in_list, out_list = create_OCR_analog_for_input(domain_knowledge_example)

    # Construct the prompt for Falcon
    # Adjust this based on Falcon's requirements
    # prompt = PROMPT_Falcon_skeleton(OCR, in_list, out_list)
    prompt = PROMPT_PaLM_UMICH_skeleton_all_asia(OCR, in_list, out_list) # must provide examples to PaLM differently than for chatGPT, at least 2 examples


    nt = num_tokens_from_string(prompt, "falcon_model_name")  # Replace "falcon_model_name" with the appropriate model name for Falcon
    try:
        logger.info(f'Prompt token length --- {nt}')
    except:
        print(f'Prompt token length --- {nt}')

    # Assuming Falcon has a similar API structure as PaLM
    # Adjust the settings based on Falcon's requirements
    Falcon_settings = {
        'model': 'models/falcon_model_name',  # Replace with the appropriate model name for Falcon
        'temperature': 0,
        'candidate_count': 1,
        'top_k': 40,
        'top_p': 0.95,
        'max_output_tokens': 8000,
        'stop_sequences': [],
        # Add any other required settings for Falcon
    }

    # Send the prompt to Falcon for inference
    # Adjust the API call based on Falcon's requirements
    response = falcon.generate_text(**Falcon_settings, prompt=prompt)

    # Process the response from Falcon
    if response and response.result:
        if isinstance(response.result, (str, bytes)):
            response_valid = check_and_redo_JSON(response, Falcon_settings, logger)
        else:
            response_valid = {}
    else:
        response_valid = {}

    return response_valid
'''