Skip to content

Commit

Permalink
account swarm + layout document fix
Browse files Browse the repository at this point in the history
  • Loading branch information
kyegomez committed Nov 9, 2023
1 parent fe19f21 commit 1dc1e8f
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 50 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ error.txt

# C extensions
*.so
.ruff_cache


errors.txt
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
```sh
chmod +x quality.sh
chmod +x code_quality.sh
```

4. Run the script:
Expand Down
55 changes: 20 additions & 35 deletions demos/accountant_team/accountant_team.py
Original file line number Diff line number Diff line change
@@ -1,50 +1,35 @@
# !pip install --upgrade swarms==2.0.6

from swarms.models import BioGPT
import re
from swarms.models.nougat import Nougat
from swarms.structs import Flow
from swarms.models import OpenAIChat
from swarms.models import LayoutLMDocumentQA

# # URL of the image of the financial document
IMAGE_OF_FINANCIAL_DOC_URL = "bank_statement_2.jpg"

# Example usage
api_key = "" # Your actual API key here

# Initialize the OCR model

api_key = ""

# Initialize the language flow
llm = BioGPT()


# 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:
llm = OpenAIChat(
openai_api_key=api_key,
)

Here is the Analyzed Document:
---
{out}
"""
# LayoutLM Document QA
pdf_analyzer = LayoutLMDocumentQA()

question = "What is the total amount of expenses?"
answer = pdf_analyzer(
question,
IMAGE_OF_FINANCIAL_DOC_URL,
)

# Initialize the Flow with the language flow
flow1 = Flow(llm=llm, max_loops=1, dashboard=False)

# Create another Flow for a different task
flow2 = Flow(llm=llm, max_loops=1, dashboard=False)

agent = Flow(llm=llm)
SUMMARY_AGENT_PROMPT = f"""
Generate an actionable summary of this financial document be very specific and precise, provide bulletpoints be very specific provide methods of lowering expenses: {answer}"
"""

# Add tasks to the workflow
summary_agent = flow1.run(summary_agent_prompt(IMAGE_OF_FINANCIAL_DOC_URL))

# 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}"
)
summary_agent = agent.run(SUMMARY_AGENT_PROMPT)
print(summary_agent)
2 changes: 1 addition & 1 deletion example.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from swarms.models import OpenAIChat
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
llm = OpenAIChat(
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ classifiers = [
[tool.poetry.dependencies]
python = "^3.8.1"
transformers = "*"
openai = "*"
openai = "0.28.1"
langchain = "*"
asyncio = "*"
nest_asyncio = "*"
Expand Down
2 changes: 1 addition & 1 deletion sequential_workflow_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from swarms.structs.sequential_workflow import SequentialWorkflow

# Example usage
api_key = "" # Your actual API key here
api_key = ""

# Initialize the language flow
llm = OpenAIChat(
Expand Down
12 changes: 6 additions & 6 deletions swarms/__init__.py
Original file line number Diff line number Diff line change
@@ -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 warnings

Expand All @@ -12,3 +6,9 @@
# disable tensorflow warnings

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 *
4 changes: 1 addition & 3 deletions swarms/models/layoutlm_document_qa.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
visual question answering on real world docs lik invoice, pdfs, etc
"""
from transformers import pipeline
from swarms.models.base import AbstractModel


class LayoutLMDocumentQA(AbstractModel):
class LayoutLMDocumentQA:
"""
LayoutLMDocumentQA for document question answering:
Expand Down
17 changes: 15 additions & 2 deletions swarms/models/nougat.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
- Extracting metadata from pdfs
"""

import re
import torch
from PIL import Image
from transformers import NougatProcessor, VisionEncoderDecoderModel
Expand Down Expand Up @@ -70,5 +70,18 @@ def __call__(self, img_path: str):
sequence = self.processor.post_process_generation(sequence,
fix_markdown=False)

out = print(repr(sequence))
out = print(sequence)
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)

0 comments on commit 1dc1e8f

Please sign in to comment.