vanipm / plantuml-langchain_plantuml

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Visualization UML diagram tool for LangChain workflows

License PyPi version lint Build status

Subscribe to events using a callback and store them in PlantUML format to easily visualize LangChain workflow in Activity Diagram and Sequence Diagram. You can easily subscribe to events and keep them in a form that is easy to visualize and analyze using PlantUML.

Activity Diagram

Sequence Diagram

Quick Start

Install this library:

pip install langchain-plantuml

Then:

  1. Add import langchain_plantuml as the first import in your Python entrypoint file
  2. Create a callback using the activity_diagram_callback function
  3. Hook into your LLM application
  4. Call the export_uml_content method of activity_diagram_callback to export the PlantUML content
  5. Save PlantUML content to a file
  6. Exporting PlantUML to PNG

Running the minimal activity diagram example.

from langchain import OpenAI, LLMChain, PromptTemplate
from langchain.memory import ConversationBufferMemory

from langchain_plantuml import diagram

template = """You are a chatbot having a conversation with a human.

{chat_history}
Human: {human_input}
Chatbot:"""

prompt = PromptTemplate(
    input_variables=["chat_history", "human_input"], template=template
)
memory = ConversationBufferMemory(memory_key="chat_history")

activity_diagram = diagram.activity_diagram_callback(note_max_length=2000)
sequence_diagram = diagram.sequence_diagram_callback(note_max_length=2000)

llm_chain = LLMChain(
    llm=OpenAI(),
    prompt=prompt,
    verbose=True,
    memory=memory,
    callbacks=[activity_diagram, sequence_diagram]
)

try:
    llm_chain.predict(human_input="What did biden say about ketanji brown jackson in the state of the union address?")
finally:
    activity_diagram.save_uml_content("example_1_activity-plantuml.puml")
    sequence_diagram.save_uml_content("example_1_sequence-plantuml.puml")

You will get the following PlantUML activity diagram

Sequence Diagram

callback_handler = diagram.sequence_diagram_callback()

Custom note max Length(default 1000)

callback_handler = diagram.activity_diagram_callback(note_max_length=2000)

Custom note wrap width(default 500)

callback_handler = diagram.activity_diagram_callback(note_wrap_width=500)

Exporting PlantUML to PNG

You can download plantuml.1.2023.10.jar

java -DPLANTUML_LIMIT_SIZE=81920 -jar plantuml-1.2023.10.jar example-activity.puml

About

License:Apache License 2.0


Languages

Language:Python 99.3%Language:Makefile 0.7%