| from src.utils.models_loader import ocr_llm | |
| from .prompts import prompt | |
| from .state import State | |
| from langgraph.graph import StateGraph, START, END | |
| from langgraph.checkpoint.memory import MemorySaver | |
| from google.genai import types | |
| from google import genai | |
| from langchain_core.messages import HumanMessage | |
| class Generate: | |
| def __init__(self): | |
| self.client = genai.Client() | |
| self.model_name = ocr_llm | |
| def run(self, state:State): | |
| latest_human_message = next( | |
| (msg for msg in reversed(state['messages']) if isinstance(msg, HumanMessage)), | |
| None | |
| ) | |
| response = self.client.models.generate_content( | |
| model=self.model_name, | |
| contents=[ | |
| types.Part.from_bytes(data=state['image'], mime_type="image/jpeg"), | |
| prompt(latest_human_message) | |
| ] | |
| ) | |
| print('The prompt is:', prompt(latest_human_message)) | |
| return { | |
| 'messages':[{'role': 'assistant', 'content': response.text}], | |
| 'suggestions': response.text | |
| } | |
| class Graph: | |
| def __init__(self): | |
| self.memory = MemorySaver() | |
| def run(self): | |
| workflow = StateGraph(State) | |
| workflow.add_node('generate_pickups', Generate().run) | |
| workflow.add_edge(START,'generate_pickups') | |
| workflow.add_edge('generate_pickups',END) | |
| return workflow.compile(checkpointer=self.memory) |