Lyzr-Automata powered README Generation
Tags: chatgpt, machinelearning, deeplearning, readme
Published: 2024-04-17 12:07:48

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
```
## Getting Started
**1.Import Libraries**
```python
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")
```
**2. _generate_readme_file_ Function**
- `OpenAIModel` — Create our models using OpenAI Key and specify the model type and name. (GPT-4)
- `Agent` — _readme_agent_, create a Lyzr Agent for readme generation.
- `Task` — _readme_creator_task_, create Lyzr Task with instructions and input to generate readme file.

~~~python
# 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
~~~
**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
```python
# 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
```
## Run App
```
streamlit run main.py
```
## Flow Diagram

![Flow Diagram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuve1db6cngcwmo3ck03.png)

Want to create more of such amazing AI Workflows? Visit our website at **[GitHub](https://github.com/LyzrCore/lyzr-automata)** to learn more about Lyzr-Automata!

Also checkout Lyzr SDKs at **[GitHub](https://github.com/LyzrCore/lyzr)**

**Lyzr Website**: [Lyzr.ai](https://www.lyzr.ai/)
**Lyzr Community Channel**: [Discord](https://discord.com/invite/nm7zSyEFA2)

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