DEV Community

Cover image for Lyzr-Automata powered README Generation
Rasswanth Shankar
Rasswanth Shankar

Posted on

Lyzr-Automata powered README Generation

READMEs are crucial for clear communication and project understanding, but creating them can be a time-consuming chore. In this blog post, we’ll explore how we can leverages Lyzr-Automata’s capabilities to transform a file of code into clear, concise, and informative READMEs.

Setup

Create a folder, set up a virtual environment and activate it. Create .env file with your OPENAI_API_KEY. Then install the following libraries to get started.

Libraries

  • streamlit: for building the web app interface.
  • lyzr_automata : for implementing our AI models, and tasks.
  • dotenv: for loading environment variables (API key).
git+https://github.com/LyzrCore/lyzr-automata.git@main
streamlit==1.33.0
python-dotenv==1.0.1
Enter fullscreen mode Exit fullscreen mode

Getting Started

1.Import Libraries

import streamlit as st
from lyzr_automata.ai_models.openai import OpenAIModel
from lyzr_automata import Agent, Task
from lyzr_automata.tasks.task_literals import InputType, OutputType

from dotenv import load_dotenv
import os

load_dotenv()

# Load OpenAI API Key
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
Enter fullscreen mode Exit fullscreen mode

2. generate_readme_file Function

  • OpenAIModel — Create our models using OpenAI Key and specify the model type and name. (GPT-4)
  • Agentreadme_agent, create a Lyzr Agent for readme generation.
  • Taskreadme_creator_task, create Lyzr Task with instructions and input to generate readme file.
# Function to generate readme file
def generate_readme_file(file_contents, output_headers):
    # Initialize OpenAI Text Model
    open_ai_model_text = OpenAIModel(
    api_key=OPENAI_API_KEY,
    parameters={
        "model": "gpt-4-turbo-preview",
        "temperature": 0.2,
        "max_tokens": 4000,
        },
    )
    # Create a markdown generator Agent
    readme_agent = Agent(
        prompt_persona="You are an intelligent agent that can write in markdown format, but do not include ```markdown in the output.",
        role="Readme Generator"
    )
    # Create a markdown generator Task
    readme_creator_task = Task(
        name="Generate Readme Task",
        agent=readme_agent,
        output_type=OutputType.TEXT,
        input_type=InputType.TEXT,
        model=open_ai_model_text,
        instructions="Write a README file for the provided code. Return only the output. Headers to be included are: " + output_headers,
        log_output=True,
        enhance_prompt=False,
        default_input=file_contents,
    ).execute()

    with open("generated_file.md", "w") as my_file:
        my_file.write(readme_creator_task)

    return readme_creator_task
Enter fullscreen mode Exit fullscreen mode

3. Input Components

  • st.file_uploader — To upload code file.
  • st.text_area — Text area to enter headers required
  • st.button — Button to submit inputs
# File uploader input
code_file = st.file_uploader("Upload your .py file")

# Headers input
output_headers = st.text_area("Headers to include", '''1. Title
2. Overview
3. Dependencies
4. Flow of the code in a bulleted format with 1-2 sentences each point.
5. How to run
''')

# Submit button
submit_file = st.button("Submit")

if submit_file:
    file_contents = code_file.read() # Read file
    readme_content = generate_readme_file(file_contents, output_headers) # Generate Readme file
    st.write(readme_content) # Print output
    st.download_button('Download readme', readme_content, file_name="generated_readme.md", mime="text/markdown") # Download output
Enter fullscreen mode Exit fullscreen mode

Run App

streamlit run main.py
Enter fullscreen mode Exit fullscreen mode

Flow Diagram

Flow Diagram

Want to create more of such amazing AI Workflows? Visit our website at GitHub to learn more about Lyzr-Automata!

Also checkout Lyzr SDKs at GitHub

Lyzr Website: Lyzr.ai
Lyzr Community Channel: Discord

Code: https://github.com/rasswanth-lyzr/readme_generator
Video Walkthrough:
Demo: https://rasswanth-lyzr-readme-generator-main-mchxnr.streamlit.app/

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay