Skip to content

Commit

Permalink
Initial change from dicts to objects (#9)
Browse files Browse the repository at this point in the history
* Initial change from dicts to objects

* add newline at EOF

* Add __str__ methods to objects

* Change naming of objects to remove 'Cohere'

* Change object names to be nouns

* change sanity-test.py and rename ChooseBest object
  • Loading branch information
jimwu6 committed May 11, 2021
1 parent f9a09c9 commit 6776135
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 10 deletions.
47 changes: 42 additions & 5 deletions cohere/__init__.py
Expand Up @@ -25,22 +25,22 @@ def generate(self, model, prompt, max_tokens=20, temperature=1, k=0, p=0.75):
"p": p,
})
response = self.__request(json_body, GENERATE_URL, model)
return response["text"]
return Generation(response["text"])

def similarity(self, model, anchor, targets):
json_body = json.dumps({
"anchor": anchor,
"targets": targets,
})
response = self.__request(json_body, SIMILARITY_URL, model)
return response["similarities"]
return Similarities(response["similarities"])

def embed(self, model, texts):
json_body = json.dumps({
"texts": texts,
})
response = self.__request(json_body, EMBED_URL, model)
return response["embeddings"]
return Embeddings(response["embeddings"])

def choose_best(self, model, query, options, mode=""):
json_body = json.dumps({
Expand All @@ -49,14 +49,14 @@ def choose_best(self, model, query, options, mode=""):
"mode": mode,
})
response = self.__request(json_body, CHOOSE_BEST_URL, model)
return response
return BestChoices(response['likelihoods'], mode)

def likelihood(self, model, text):
json_body = json.dumps({
"text": text,
})
response = self.__request(json_body, LIKELIHOOD_URL, model)
return response
return Likelihoods(response['likelihood'], response['token_likelihoods'])

def __request(self, json_body, endpoint, model):
headers = {
Expand Down Expand Up @@ -96,3 +96,40 @@ def __repr__(self):
self.message,
self.http_status,
)

class Generation:
def __init__(self, text):
self.text = text

def __str__(self):
return self.text

class Similarities:
def __init__(self, similarities):
self.similarities = similarities

def __str__(self):
return str(self.similarities)

class Embeddings:
def __init__(self, embeddings):
self.embeddings = embeddings

def __str__(self):
return str(self.embeddings)

class BestChoices:
def __init__(self, likelihoods, mode):
self.likelihoods = likelihoods
self.mode = mode

def __str__(self):
return str(self.likelihoods)

class Likelihoods:
def __init__(self, likelihood, token_likelihoods):
self.likelihood = likelihood
self.token_likelihoods = token_likelihoods

def __str__(self):
return str(self.likelihood) + "\n" + str(self.token_likelihoods)
10 changes: 5 additions & 5 deletions sanity-test.py
Expand Up @@ -10,7 +10,7 @@
model="baseline-355m",
prompt="co:here",
max_tokens=10)
print('prediction: {}'.format(prediction))
print('prediction: {}'.format(prediction.text))

embeddings = co.embed(
model="baseline-124m",
Expand All @@ -20,21 +20,21 @@
model="baseline-124m",
anchor="cohere ai",
targets=["co:here", "cohere"])
print('Similarity value of `co:here`: {}'.format(similarities[0]))
print('Similarity value of `co:here`: {}'.format(similarities.similarities[0]))

options = co.choose_best(
model="baseline-355m",
query="hello {}",
options=["world", "cohere"])
print('first option is `world`, with likelihood value of {}'.format(options['likelihoods'][0]))
print('first option is `world`, with likelihood value of {}'.format(options.likelihoods[0]))
print('Selected mode was {}'.format(options['mode']))

likelihood = co.likelihood(
model="baseline-355m",
text="hello, my name is johnny SURPRISE")
print('likelihood of text is {}'.format(likelihood['likelihood']))
print('likelihood of text is {}'.format(likelihood.likelihood))
print('token likelihoods are: (first token has no likelihood)')
for token in likelihood['token_likelihoods']:
for token in likelihood.token_likelihoods:
print(token['token'], token.get('likelihood', ''))
try:
predictions = co.generate(
Expand Down

0 comments on commit 6776135

Please sign in to comment.