File size: 1,413 Bytes
a39c45e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from promptsplitembed import create_qamodel, create_prompt
from extractjson import extract_json
from langchain_openai import ChatOpenAI

qa_chat_model = create_qamodel(model="gpt-4o-mini", temperature=0)

def process_reference(reference_document, ref_prompt):
    ref_prompt_template = create_prompt(ref_prompt)
    ref_generation_chain = ref_prompt_template | qa_chat_model
    result = ref_generation_chain.invoke({"source": reference_document})
    ref_gen_tokens = result.usage_metadata["total_tokens"]
    reference = dict(extract_json(result)[0])
    
    answers = {}
    for key in reference:
        if key.startswith('Question'):
            question_number = key.split('#')[1]
            answer_key = f'Answer #{question_number}'
            answers[key] = reference[answer_key]
    print("Processed reference document")
    return reference, answers, ref_gen_tokens

def process_student(documents, reference, student_prompt):
    test_doc = documents[0]
    student_prompt_template = create_prompt(student_prompt)
    student_response_chain = student_prompt_template | qa_chat_model
    student_result = student_response_chain.invoke({"source": reference.keys(),"student": test_doc })
    student_gen_tokens = student_result.usage_metadata["total_tokens"]
    student_result = dict(extract_json(student_result)[0])
    print("Processed student document")
    return student_result, student_gen_tokens