>  기사  >  백엔드 개발  >  AI 및 BotHub API를 사용하여 생산성을 높이는 간단한 Python 앱 구축

AI 및 BotHub API를 사용하여 생산성을 높이는 간단한 Python 앱 구축

Barbara Streisand
Barbara Streisand원래의
2024-11-15 12:40:03785검색

할 일을 할당하고 아이디어를 논의하면서 중요한 온라인 회의를 마치고 나서 누가 무슨 말을 했는지 기억이 나지 않으신가요? 모든 것을 추적하고 보고서를 생성하려면 전담 메모 작성자가 필요한 것처럼 느껴집니다. 더 나은 해결책은 스크립트를 사용하여 이를 자동화하는 것인데, 이것이 바로 우리가 할 일입니다.

이 튜토리얼에서는 BotHub API(Whisper-1 Claude 3.5 Sonnet)를 사용하여 회의를 자동으로 분석하고 보고서를 생성하는 애플리케이션을 만드는 방법을 보여 드리겠습니다. 이 애플리케이션은 오디오 녹음을 기록하고 주요 정보(누가 무엇을 말했는지, 어떤 작업이 논의되었는지)를 식별하고 PDF 버전을 포함한 보고서를 편집합니다.

종속성 및 프로젝트 구성 설정

시작하기 전에 Python과 API 및 오디오 파일 작업에 필요한 라이브러리를 포함하여 필요한 모든 구성 요소가 설치되어 있는지 확인하겠습니다. 다음을 설치하겠습니다:

  • os 및 pathlib.Path: 환경 변수 및 파일 경로 작업용;
  • dotenv: .env 파일에서 민감한 데이터를 로드합니다.
  • fpdf: PDF 파일 생성용;
  • openai: BotHub API와 상호작용합니다.

pip를 사용하여 다음 패키지를 설치하세요.

pip install openai python-dotenv fpdf

또한 로깅을 사용하여 프로그램 실행을 추적하고 오류나 중요한 메시지를 기록합니다. INFO 수준에서 기본 로깅을 설정하겠습니다.

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

BotHub API와 상호작용하려면 먼저 BotHub 플랫폼에 등록하고 API 키를 받아야 합니다. 이 키는 우리가 보낼 요청을 인증하는 데 사용됩니다.

Building a simple Python app to boost productivity using AI and the BotHub API

안전한 키 저장을 위해 프로젝트의 루트 디렉터리에 .env 파일을 생성하고 생성된 API 키를 추가하세요.

BOTHUB_API_KEY=your_api_key

다음으로 dotenv 라이브러리의 load_dotenv() 함수를 사용하여 .env 파일에서 데이터를 로드하여 코드에서 액세스할 수 있도록 합니다.

from dotenv import load_dotenv

load_dotenv()

BotHub API를 사용하려면 OpenAI 인스턴스를 생성하고 BotHub 서비스에 대한 api_key 및 base_url을 제공하세요. API 키는 os.getenv('BOTHUB_API_KEY')를 사용하여 환경에서 로드됩니다.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv('BOTHUB_API_KEY'),
    base_url='https://bothub.chat/api/v2/openai/v1'
)

오디오 처리 핵심 기능

이 단계에는 오디오 파일을 텍스트로 변환하는 기능을 만드는 작업이 포함됩니다. 음성 인식을 위해 BotHub API와 Whisper-1을 활용하겠습니다. 오디오 파일은 바이너리 읽기 모드(rb)로 열린 다음 client.audio.transcriptions.create 메소드를 사용하여 처리를 위해 오디오 파일을 서버로 보냅니다. 응답에는 텍스트 전사가 포함됩니다. 전사가 성공하면 "전사 완료" 메시지가 기록되고 추가 처리를 위해 텍스트가 반환됩니다. 오류가 발생하면 오류 메시지가 기록됩니다.

def transcribe_audio(audio_file_path):
    try:
        with open(audio_file_path, "rb") as audio_file:
            transcript = client.audio.transcriptions.create(
                model="whisper-1",
                file=audio_file
            )
        logger.info("Transcription complete.")
        return transcript.text
    except Exception as e:
        logger.error(f"Error during audio transcription: {e}")
        return None

Extracting Key Insights

After transcription, we have the text of our meeting. Now, our goal is to extract key insights, such as discussed tasks, decisions made, and any identified problems. Using client.chat.completions.create, we create a request to extract these key points, specifying the model, the meeting text, and the request in a messages format, where we instruct the model to identify the main tasks and problems. The function returns a string containing the key insights upon successful execution.

def extract_key_points(meeting_text):
    try:
        response = client.chat.completions.create(
            model="claude-3.5-sonnet",
            messages=[
                {
                    "role": "user",
                    "content": f"Analyze the following meeting transcript and extract key insights, such as tasks, decisions, and discussed problems:\n\n{meeting_text}"
                }
            ]
        )
        logger.info("Key insight extraction complete.")
        return response.choices[0].message.content
    except Exception as e:
        logger.error(f"Error extracting key insights: {e}")
        return None

Sentiment Analysis

We can also analyze the sentiment of the meeting text. Similar to extract_key_points, we use client.chat.completions.create to request a sentiment analysis of the provided text. The function returns the sentiment analysis result or an error message.

def analyze_sentiment(meeting_text):
    try:
        response = client.chat.completions.create(
            model="claude-3.5-sonnet",
            messages=[
                {
                    "role": "user",
                    "content": f"Analyze the sentiment of the following text:\n\n{meeting_text}"
                }
            ]
        )
        logger.info("Sentiment analysis complete.")
        return response.choices[0].message.content
    except Exception as e:
        logger.error(f"Error during sentiment analysis: {e}")
        return None

Report Generation

Once the key insights and sentiment analysis are complete, we need to compile them into a report. This report should be logical, coherent, and concise. We use client.chat.completions.create, providing a request with the key points and sentiment analysis, allowing the API to generate the final report text. The function returns the report text upon successful completion.

def generate_report(key_points, sentiment):
    try:
        content = f"Compile a meeting report considering the following key points and sentiment analysis:\n\nKey Points:\n{key_points}\n\nSentiment:\n{sentiment}"
        report = client.chat.completions.create(
            model="claude-3.5-sonnet",
            messages=[
                {
                    "role": "user",
                    "content": content
                }
            ]
        )
        logger.info("Report generation complete.")
        return report.choices[0].message.content
    except Exception as e:
        logger.error(f"Error generating report: {e}")
        return None

To facilitate easy storage and sharing, we save the report as a PDF. We use the FPDF library for PDF creation. We add a page, enable automatic text wrapping with multi_cell. After creating and populating the page with the report text, we save the report using output(file_path).

from fpdf import FPDF

def save_report_as_pdf(report_text, file_path="meeting_report.pdf"):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_auto_page_break(auto=True, margin=15)
    pdf.output(file_path)
    logger.info(f"Report saved as {file_path}")

Main Function

This function orchestrates all the previous steps. It begins by transcribing the audio. If transcription fails, an error message is displayed, and the function terminates. Next, it calls the function to extract key insights. If an error occurs, it returns an appropriate message. Sentiment analysis is performed similarly, and if successful, the report text is generated. If all steps complete successfully, save_report_as_pdf is called to save the report in PDF format. Finally, the function returns the generated report text.

def analyze_meeting(audio_file_path):
    meeting_text = transcribe_audio(audio_file_path)
    if not meeting_text:
        return "Error during audio transcription."

    key_points = extract_key_points(meeting_text)
    if not key_points:
        return "Error extracting key insights."

    sentiment = analyze_sentiment(meeting_text)
    if not sentiment:
        return "Error during sentiment analysis."

    report_text = generate_report(key_points, sentiment) # Pass sentiment to report generation
    if not report_text:
        return "Error generating report."

    save_report_as_pdf(report_text)
    return report_text

In conclusion, we've built a small application that can boost your productivity and help you manage your time more effectively. We implemented a series of core functions, including audio transcription, key insight extraction, report generation, and saving the report in PDF format. This tool will help you keep track of important ideas and tasks, saving you time and effort.

Hope this helped! If so, any support is welcome, thanks for reading! ?

위 내용은 AI 및 BotHub API를 사용하여 생산성을 높이는 간단한 Python 앱 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.