Skip to content

Commit e0048cf

Browse files
committed
update
1 parent a8d4cba commit e0048cf

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

clueai/client.py

+41
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from clueai.error import ClueaiError
1717
from clueai.generation import Generations, Generation, TokenLikelihood
1818
from clueai.match import Match, Matches, Score
19+
from clueai.qa import QAs, QA, QAPair
1920
from clueai.tokenize import Tokens
2021
from clueai.classify import Classifications, Classification, Example as ClassifyExample, Confidence
2122
from clueai.extract import Entity, Example as ExtractExample, Extraction, Extractions
@@ -317,6 +318,46 @@ def search(
317318

318319
return Matches([match_instance])
319320

321+
def doc_qa_generate(
322+
self,
323+
doc: str,
324+
headers: dict = {},
325+
model_name: str = None
326+
):
327+
try:
328+
res = self.check_api_key()
329+
if not res['valid']:
330+
raise ClueaiError('invalid api key')
331+
except ClueaiError as e:
332+
raise ClueaiError(
333+
message=e.message,
334+
http_status=e.http_status,
335+
headers=e.headers)
336+
337+
tmp_headers = {
338+
'Api-Key': 'BEARER {}'.format(self.api_key),
339+
'Content-Type': 'application/json',
340+
'Request-Source': 'python-sdk',
341+
'Model-name': model_name
342+
}
343+
if self.modelfun_version != '':
344+
tmp_headers['clueai-Version'] = self.modelfun_version
345+
tmp_headers.update(headers)
346+
response = requests.get(f"{self.clueai_api_url}/doc_auto_qa/?doc={doc}",
347+
headers=tmp_headers)
348+
response = response.json()
349+
if "result" not in response:
350+
raise ClueaiError(f'No result in response, please check or try. error{response}')
351+
352+
result = response['result']
353+
qa_pairs = []
354+
for q, a in result['qa_pairs'].items():
355+
qa_pairs.append(QAPair(q, a))
356+
357+
qa_instance = QA(doc, qa_pairs)
358+
359+
return QAs([qa_instance])
360+
320361
def text2image(
321362
self,
322363
prompt: str,

clueai/qa.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from clueai.response import ClueaiObject
2+
from typing import List
3+
4+
class QAPair(ClueaiObject):
5+
def __init__(self, question: str, answer: str) -> None:
6+
self.question = question
7+
self.answer = answer
8+
9+
class QA(ClueaiObject):
10+
def __init__(self, doc: str, qa_pairs: List[QAPair]) -> None:
11+
self.doc = doc
12+
self.qa_pairs = qa_pairs
13+
14+
15+
class QAs(ClueaiObject):
16+
def __init__(self, qas: List[QA]) -> None:
17+
self.qas = qas
18+
self.iterator = iter(qas)
19+
20+
def __iter__(self) -> iter:
21+
return self.iterator
22+
23+
def __next__(self) -> next:
24+
return next(self.iterator)
25+
26+
def __len__(self) -> int:
27+
return len(self.qas)

0 commit comments

Comments
 (0)