| from dotenv import load_dotenv, find_dotenv |
| from langchain.llms import HuggingFaceHub, OpenAI |
| from langchain.chains import LLMChain |
| from langchain.prompts import PromptTemplate |
| import warnings |
| from typing import List |
| from langchain.prompts import FewShotPromptTemplate |
|
|
|
|
| warnings.filterwarnings("ignore") |
|
|
|
|
| def llm_inference( |
| model_type: str, |
| input_variables_list: List[str] = [], |
| prompt_template: str = "", |
| openai_model_name: str = "", |
| hf_repo_id: str = "", |
| inference_type : str = "", |
| temperature: float = 0.1, |
| max_length: int = 64, |
| ) -> str: |
| """Call HuggingFace/OpenAI model for inference |
| |
| Given a question, prompt_template, and other parameters, this function calls the relevant |
| API to fetch LLM inference results. |
| |
| Args: |
| model_str: Denotes the LLM vendor's name. Can be either 'huggingface' or 'openai' |
| input_variables_list: List of the name of input variables for the prompt. |
| prompt_template(Optional): A template for the prompt. |
| hf_repo_id: The Huggingface model's repo_id. |
| inference_type: Two options, first "evaluation" to evaluate answer privided by the candidate, second generate questions |
| temperature: (Default: 1.0). Range: Float (0.0-100.0). The temperature of the sampling operation. 1 means regular sampling, 0 means always take the highest score, 100.0 is getting closer to uniform probability. |
| max_length: Integer to define the maximum length in tokens of the output summary. |
| |
| Returns: |
| A Python string which contains the inference result. |
| |
| HuggingFace repo_id examples: |
| - mistralai/Mistral-7B-Instruct-v0.1 |
| - google/flan-t5-xxl |
| - tiiuae/falcon-7b-instruct |
| |
| |
| """ |
| |
| load_dotenv(find_dotenv()) |
| if inference_type == "evaluation": |
| prompt = prompt_template |
| else: |
| prompt = PromptTemplate( |
| template=prompt_template, input_variables=input_variables_list |
| ) |
|
|
| if model_type == "openai": |
| |
| llm = OpenAI( |
| model_name=openai_model_name, temperature=temperature, max_tokens=max_length |
| ) |
| llm_chain = LLMChain(prompt=prompt, llm=llm) |
|
|
| if inference_type == "evaluation": |
| return llm_chain.run( |
| position = input_variables_list[0], |
| question=input_variables_list[1], |
| answer=input_variables_list[2], |
|
|
| ) |
| else: |
| return llm_chain.predict( |
| position=input_variables_list[0], |
| candidate_profile=input_variables_list[1], |
| num_ques_to_gen=input_variables_list[2], |
| ) |
|
|
| elif model_type == "huggingface": |
| |
| llm = HuggingFaceHub( |
| repo_id=hf_repo_id, |
| model_kwargs={"temperature": temperature, "max_length": max_length} ) |
| llm_chain = LLMChain(prompt=prompt, llm=llm) |
|
|
| if inference_type == "evaluation": |
| return llm_chain.run( |
| position = input_variables_list[0], |
| question=input_variables_list[1], |
| answer=input_variables_list[2], |
|
|
| ) |
| else: |
| return llm_chain.predict( |
| position=input_variables_list[0], |
| candidate_profile=input_variables_list[1], |
| num_ques_to_gen=input_variables_list[2], |
| ) |
|
|
| else: |
| print( |
| "Please use the correct value of model_type parameter: It can have a value of either openai or huggingface" |
| ) |
|
|
| return "" |