File size: 1,277 Bytes
0c0a4f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
32
33
34
35
36
37
38
# in your agent definition file, e.g. rag/doc_parse_agent.py

import os, base64, json
from typing import Dict, Any
from langchain.tools import StructuredTool
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from rag.ocr_mistral import parse_passport
from rag.ocr_azure import parse_passport_azure

# -- LangChain tool wrapper -------------------------------------------------
azure_passport_tool = StructuredTool.from_defaults(
    name="parse_passport_azure",
    func=parse_passport_azure,
    description="Extract key fields from raw passport bytes.",
)

# -- Agent factory ----------------------------------------------------------
def create_passport_agent():
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    return initialize_agent(
        tools=[azure_passport_tool],
        llm=llm,
        agent=AgentType.STRUCTURED_TOOLING,
        verbose=False,
        handle_parsing_errors=True,
    )

# quick demo when executed directly
if __name__ == "__main__":
    ag = create_passport_agent()
    with open("data/sample_passport.png", "rb") as f:
        result = ag.run(
            "Extract passport info",
            input={"parse_passport_azure": f.read()}
        )
    print("Agent returned:", result)