|
import numpy as np |
|
import openai |
|
import os |
|
import random |
|
import string |
|
|
|
|
|
def is_climate_change_related(sentence: str, classifier) -> bool: |
|
"""_summary_ |
|
|
|
Args: |
|
sentence (str): your sentence to classify |
|
classifier (_type_): zero shot hugging face pipeline classifier |
|
|
|
Returns: |
|
bool: is_climate_change_related or not |
|
""" |
|
results = classifier( |
|
sequences=sentence, |
|
candidate_labels=["climate change related", "non climate change related"], |
|
) |
|
print(f" ## Result from is climate change related {results}") |
|
return results["labels"][np.argmax(results["scores"])] == "climate change related" |
|
|
|
|
|
def make_pairs(lst): |
|
"""From a list of even lenght, make tupple pairs |
|
Args: |
|
lst (list): a list of even lenght |
|
Returns: |
|
list: the list as tupple pairs |
|
""" |
|
assert not (l := len(lst) % 2), f"your list is of lenght {l} which is not even" |
|
return [(lst[i], lst[i + 1]) for i in range(0, len(lst), 2)] |
|
|
|
|
|
def set_openai_api_key(text): |
|
"""Set the api key and return chain.If no api_key, then None is returned. |
|
To do : add raise error & Warning message |
|
Args: |
|
text (str): openai api key |
|
Returns: |
|
str: Result of connection |
|
""" |
|
openai.api_key = os.environ["api_key"] |
|
|
|
if text.startswith("sk-") and len(text) > 10: |
|
openai.api_key = text |
|
return f"You're all set: this is your api key: {openai.api_key}" |
|
|
|
|
|
def create_user_id(length): |
|
"""Create user_id |
|
Args: |
|
length (int): length of user id |
|
Returns: |
|
str: String to id user |
|
""" |
|
letters = string.ascii_lowercase |
|
user_id = "".join(random.choice(letters) for i in range(length)) |
|
return user_id |
|
|
|
|
|
def to_completion(messages): |
|
s = [] |
|
for message in messages: |
|
s.append(f"<|im_start|>{message['role']}\n{message['content']}<|im_end|>") |
|
s.append("<|im_start|>assistant\n") |
|
return "\n".join(s) |
|
|