Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie eine einfache Python-App, um die Produktivität mithilfe von KI und der BotHub-API zu steigern

Erstellen Sie eine einfache Python-App, um die Produktivität mithilfe von KI und der BotHub-API zu steigern

Barbara Streisand
Barbara StreisandOriginal
2024-11-15 12:40:03785Durchsuche

タスクが割り当てられ、アイデアが議論された重要なオンライン会議から退席したものの、誰が何を言ったかまったく思い出せないという経験はありませんか?すべてを追跡し、レポートを作成するには、専任のメモを取る人が必要であるように感じられます。より良い解決策は、スクリプトを使用してこれを自動化することです。これはまさに私たちが行うことです。

このチュートリアルでは、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! ?

Das obige ist der detaillierte Inhalt vonErstellen Sie eine einfache Python-App, um die Produktivität mithilfe von KI und der BotHub-API zu steigern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn