account swarm + layout document fix

pull/128/head
Kye 1 year ago
parent fe19f21bce
commit 1dc1e8f270

1
.gitignore vendored

@ -28,6 +28,7 @@ error.txt
# C extensions # C extensions
*.so *.so
.ruff_cache
errors.txt errors.txt

@ -111,7 +111,7 @@ You can learn more about mkdocs on the [mkdocs website](https://www.mkdocs.org/)
3. Make sure the script has execute permissions: 3. Make sure the script has execute permissions:
```sh ```sh
chmod +x quality.sh chmod +x code_quality.sh
``` ```
4. Run the script: 4. Run the script:

@ -1,50 +1,35 @@
# !pip install --upgrade swarms==2.0.6 import re
from swarms.models import BioGPT
from swarms.models.nougat import Nougat from swarms.models.nougat import Nougat
from swarms.structs import Flow from swarms.structs import Flow
from swarms.models import OpenAIChat
from swarms.models import LayoutLMDocumentQA
# # URL of the image of the financial document # # URL of the image of the financial document
IMAGE_OF_FINANCIAL_DOC_URL = "bank_statement_2.jpg" IMAGE_OF_FINANCIAL_DOC_URL = "bank_statement_2.jpg"
# Example usage # Example usage
api_key = "" # Your actual API key here api_key = ""
# Initialize the OCR model
# Initialize the language flow # Initialize the language flow
llm = BioGPT() llm = OpenAIChat(
openai_api_key=api_key,
)
# Create a prompt for the language model
def summary_agent_prompt(analyzed_doc: str):
model = Nougat(
max_new_tokens=5000,
)
out = model(analyzed_doc)
return f"""
Generate an actionable summary of this financial document, provide bulletpoints:
Here is the Analyzed Document: # LayoutLM Document QA
--- pdf_analyzer = LayoutLMDocumentQA()
{out}
"""
question = "What is the total amount of expenses?"
answer = pdf_analyzer(
question,
IMAGE_OF_FINANCIAL_DOC_URL,
)
# Initialize the Flow with the language flow # Initialize the Flow with the language flow
flow1 = Flow(llm=llm, max_loops=1, dashboard=False) agent = Flow(llm=llm)
SUMMARY_AGENT_PROMPT = f"""
# Create another Flow for a different task Generate an actionable summary of this financial document be very specific and precise, provide bulletpoints be very specific provide methods of lowering expenses: {answer}"
flow2 = Flow(llm=llm, max_loops=1, dashboard=False) """
# Add tasks to the workflow # Add tasks to the workflow
summary_agent = flow1.run(summary_agent_prompt(IMAGE_OF_FINANCIAL_DOC_URL)) summary_agent = agent.run(SUMMARY_AGENT_PROMPT)
print(summary_agent)
# Suppose the next task takes the output of the first task as input
out = flow2.run(
f"Provide an actionable step by step plan on how to cut costs from the analyzed financial document. {summary_agent}"
)

@ -1,7 +1,7 @@
from swarms.models import OpenAIChat from swarms.models import OpenAIChat
from swarms.structs import Flow from swarms.structs import Flow
api_key = "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" api_key = ""
# Initialize the language model, this model can be swapped out with Anthropic, ETC, Huggingface Models like Mistral, ETC # Initialize the language model, this model can be swapped out with Anthropic, ETC, Huggingface Models like Mistral, ETC
llm = OpenAIChat( llm = OpenAIChat(

@ -24,7 +24,7 @@ classifiers = [
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.8.1" python = "^3.8.1"
transformers = "*" transformers = "*"
openai = "*" openai = "0.28.1"
langchain = "*" langchain = "*"
asyncio = "*" asyncio = "*"
nest_asyncio = "*" nest_asyncio = "*"

@ -3,7 +3,7 @@ from swarms.structs import Flow
from swarms.structs.sequential_workflow import SequentialWorkflow from swarms.structs.sequential_workflow import SequentialWorkflow
# Example usage # Example usage
api_key = "" # Your actual API key here api_key = ""
# Initialize the language flow # Initialize the language flow
llm = OpenAIChat( llm = OpenAIChat(

@ -1,9 +1,3 @@
from swarms.agents import *
from swarms.swarms import *
from swarms.structs import *
from swarms.models import * # import * only works when __all__ = [] is defined in __init__.py
from swarms.chunkers import *
from swarms.workers import *
import os import os
import warnings import warnings
@ -12,3 +6,9 @@ warnings.filterwarnings("ignore", category=UserWarning)
# disable tensorflow warnings # disable tensorflow warnings
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
from swarms.agents import *
from swarms.swarms import *
from swarms.structs import *
from swarms.models import * # import * only works when __all__ = [] is defined in __init__.py
from swarms.chunkers import *
from swarms.workers import *

@ -3,10 +3,8 @@ LayoutLMDocumentQA is a multimodal good for
visual question answering on real world docs lik invoice, pdfs, etc visual question answering on real world docs lik invoice, pdfs, etc
""" """
from transformers import pipeline from transformers import pipeline
from swarms.models.base import AbstractModel
class LayoutLMDocumentQA:
class LayoutLMDocumentQA(AbstractModel):
""" """
LayoutLMDocumentQA for document question answering: LayoutLMDocumentQA for document question answering:

@ -8,7 +8,7 @@ format
- Extracting metadata from pdfs - Extracting metadata from pdfs
""" """
import re
import torch import torch
from PIL import Image from PIL import Image
from transformers import NougatProcessor, VisionEncoderDecoderModel from transformers import NougatProcessor, VisionEncoderDecoderModel
@ -70,5 +70,18 @@ class Nougat:
sequence = self.processor.post_process_generation(sequence, sequence = self.processor.post_process_generation(sequence,
fix_markdown=False) fix_markdown=False)
out = print(repr(sequence)) out = print(sequence)
return out return out
def clean_nougat_output(raw_output):
# Define the pattern to extract the relevant data
daily_balance_pattern = r"\*\*(\d{2}/\d{2}/\d{4})\*\*\n\n\*\*([\d,]+\.\d{2})\*\*"
# Find all matches of the pattern
matches = re.findall(daily_balance_pattern, raw_output)
# Convert the matches to a readable format
cleaned_data = ["Date: {}, Amount: {}".format(date, amount.replace(',', '')) for date, amount in matches]
# Join the cleaned data with new lines for readability
return '\n'.join(cleaned_data)

Loading…
Cancel
Save