DannyAI's picture
Upload 34 files
e6583bf verified
import os
from utils.retry import retry
from requests.exceptions import Timeout
from langchain.prompts import PromptTemplate
from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint
from utils.logger import setup_logger
logger = setup_logger(__name__)
HUGGINGFACEHUB_API_TOKEN = os.getenv("HUGGINGFACEHUB_API_TOKEN")
repo_id = "mistralai/Mistral-7B-Instruct-v0.3"
model_kwargs_critic = {
"max_new_tokens": 5,
"temperature": 0.1,
"timeout": 6000,
}
llm = HuggingFaceEndpoint(
repo_id=repo_id,
huggingfacehub_api_token=HUGGINGFACEHUB_API_TOKEN,
**model_kwargs_critic
)
chat_model = ChatHuggingFace(llm=llm)
prompt = PromptTemplate.from_template(
"You are a strict research reviewer. Review the abstract:\n\n{abstract}\n\nRespond with 'ACCEPTED' or 'REJECTED'."
)
critic_chain = prompt | chat_model
@retry((Timeout,))
def critic_node(state):
logger.info(f"critic_node started reviewing abstract: '{state.abstract[:50]}...'")
try:
result = critic_chain.invoke({"abstract": state.abstract})
critique = result.content.strip().upper()
logger.info(f"critic_node critique result: {critique}")
return {
"critique": critique,
"final_abstract": state.abstract if critique == "ACCEPTED" else None
}
except Exception as e:
logger.error(f"critic_node error: {e}")
raise