Python による生成 AI の活用
AI は未来です。ソフトウェア エンジニアとして、AI は最も参入すべき分野です。コード内で LLM を活用すると、リアルタイムの感情分析やユーザー生成コンテンツの解釈などの複雑なタスクを処理するよりスマートなアプリケーションを構築できます。 LLM を統合すると、ソフトウェアの応答性と機能が向上し、ユーザー エクスペリエンスと自動化が向上します。
この投稿は、Python を使用して LLM 呼び出しを行う方法を紹介するもので、これらの強力な機能を独自のコードに追加できるようになります。
まず、選択したキャラクターの チャットボットを作成します。次に、短い文章を要約する方法を学び、本全体を要約するまで進みます。最後に、再プロンプトを実行し、LLM によって提供される結果を分析する方法を学びます。
最初の LLM リクエストを行う
LLM リクエストには、Groq を使用します。そこでアカウントを作成すると、API を使用して LLM リクエストを無料で行うことができます。
これらのリクエストに Python を使用するには、pip install groq を実行して Groq Python パッケージをインストールします。次に、次のようにコードにインポートします。
import os from groq import Groq client = Groq( api_key=os.environ.get("GROQ_API_KEY"), )
必ず API キーを環境変数として設定してください。
以下を追加することで、単純な LLM リクエストを作成できます。
chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": "Explain formula 1.", } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
この場合、LLM に式 1 が何であるかを説明してもらいます。コンソールでプログラムを実行すると、llama3-8b からの出力が表示されるはずです。これを試してみたり、モデルやプロンプトを切り替えたりすることができます。
カスタムチャットボットの作成
それでは、マリオなど、好きなキャラクターのチャットボットを作成してみましょう。現時点では、LLM は中立的な/有益なトーンで応答します。ただし、LLM にシステムの役割を与えることで、LLM がマリオと同じように応答し、会話に個性と楽しさを加えることができます。これによりインタラクションの雰囲気が決まり、「それは私だよ、マリオ!」のような遊び心のある象徴的な応答が得られます。物事を魅力的に保つため。
リクエストにシステムロールを追加しましょう:
chat_completion = client.chat.completions.create( messages=[ { "role": "system", "content": "You are a super mario chatbot. Always answer in his style, and create witty responses." }, { "role": "user", "content": "Explain formula 1.", } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
それでは、LLM がマリオカートの観点からフォーミュラ 1 とは何かを説明します!
システム ロールは、バーチャル カスタマー サポート エージェント、教育講師、クリエイティブ ライティング ヘルパーなどの他のユースケースにも最適で、LLM が各ロールの特定の雰囲気やニーズに合わせた方法で応答するようにします。
テキストの要約
特定のプロンプトとシステム ロールを使用して LLM リクエストを作成する方法について少し理解できたので、要約ツールを作成してみましょう。
同じディレクトリにarticle.txtというテキスト ファイルを作成し、選択した記事に貼り付けます。このステップでは、記事が長すぎないように注意してください。
コードでは、まずそのテキストを読み込みましょう。
import os from groq import Groq client = Groq( api_key=os.environ.get("GROQ_API_KEY"), )
ここで、LLM に送信できるプロンプトを作成して、テキストを箇条書きで要約するように指示しましょう。
chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": "Explain formula 1.", } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
まずプロンプトを書き出して、LLM に明確かつ簡潔な指示を与えます。次に、要約するテキストを提供します。
あとは、作成したばかりのプロンプトで LLM を呼び出すだけです。
chat_completion = client.chat.completions.create( messages=[ { "role": "system", "content": "You are a super mario chatbot. Always answer in his style, and create witty responses." }, { "role": "user", "content": "Explain formula 1.", } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
これを実行すると、LLM に提供した記事の箇条書きの概要が表示されるはずです。
さて、フランツ・カフカの『変身』のように、非常に長い記事、あるいは場合によっては本全体を貼り付けてみてください。
LLM がエラーで戻ってくることに注意してください。一度にまとめるには多すぎます。
本の要約
LLM のコンテキスト ウィンドウは、1 回の呼び出しで処理および記憶できるテキストの量を指します。つまり、記事を一度に要約するのには最適ですが、テキストが一貫した応答を取得して生成する能力を超えているため、本全体を一度に処理することはできません。
それでは、どうすればこれを解決できるでしょうか?これは、本を「チャンク化」することで実現できます。私たちは本を LLM が管理できる「チャンク」に分割し、それらを要約するように指示します。次に、各チャンクの概要を取得したら、それらの概要を 1 つの一貫した概要にまとめることができます。
次のように文字列をチャンクに分割できます (必ず textwrap をインポートしてください):
with open('article.txt', 'r') as file: content = file.read()
後から幅を変更して、好みに合わせて最良の結果を得ることができます。
これらのチャンクがすべて揃ったので、それぞれを要約して、回答と呼ばれる変数内に応答を保存しましょう。
prompt = f""" Summarize the following text in bullet points for easy reading. Text: {content} """
このコードを実行して回答を出力すると、作成された各「チャンク」/セクションの箇条書きの概要を含む長い文字列が表示されるはずです。
あとは、LLM をもう一度使用して、すべてのセクションの概要を使用して 1 つの一貫した概要を作成するだけです。
chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": prompt, } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
コードを実行すると、書籍全体の概要が 1 つ表示されるはずです。すごいですね?
注: 本の大きさによっては、複数回「チャンク」したり、より短い応答を提供するように LLM に指示したりする必要がある場合があります。 「チャンク」要約が多すぎる場合、最終的な要約プロンプトが依然として大きすぎる可能性があります。
再プロンプト
お気づきかもしれませんが、たとえば、LLM に箇条書きで応答するように指示したとしても、常に同じ応答が得られるわけではありません。場合によっては、ヘッダーやちょっとした説明を追加することもあります。場合によっては、箇条書きのみを提供することもあります。
プログラマとしては、これにより結果の処理が困難になる場合があります。 LLM が特定の形式でより一貫した回答を提供できるようにするにはどうすればよいですか?
感情分析ツールを作ってみましょう。 LLM に悲しい話を与え、-1 から 1 までの感情スコアを計算するように指示します。
その通りです:
import os from groq import Groq client = Groq( api_key=os.environ.get("GROQ_API_KEY"), )
これを複数回実行すると、応答が常に指定した形式ではないことがわかります。ただし、その形式に依存して数値を抽出し、さらに計算を実行したい場合、それはイライラさせられます。不適切な取り扱いをすると、プログラムがクラッシュする可能性があります。
再プロンプトは、LLM に与えられた入力を調整および改良して、目的の応答または形式に導くプロセスです。 「センチメント: 0.5」としての出力を必要とするセンチメント ツールの形式を検証する場合、プロンプトを調整して、その正確な形式でセンチメント スコアのみを返すようにモデルに明確に指示することで、LLM に再プロンプトを表示し、一貫性を確保できます。応答。
正規表現を使用して、予期した形式が提供されているかどうかをチェックする関数を作成できます (したがって、必ず正規表現をインポートしてください)。
chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": "Explain formula 1.", } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
LLM から応答を取得したら、その関数を呼び出すことができます。関数が true を返した場合、正しい形式であることがわかります。 false が返された場合は、LLM に再プロンプトを出して再試行する必要があることがわかります。
chat_completion = client.chat.completions.create( messages=[ { "role": "system", "content": "You are a super mario chatbot. Always answer in his style, and create witty responses." }, { "role": "user", "content": "Explain formula 1.", } ], model="llama3-8b-8192", ) print(chat_completion.choices[0].message.content)
もちろん、これは非常に基本的な再プロンプトです。 LLM は、この 2 回目の LLM 呼び出しでも依然として間違った形式を提供する可能性があります。ただし、一貫した形式の応答の成功率ははるかに高くなるはずです。
これらのツールとテクニックを使用すると、LLM を Python コードに統合し、出力を効果的に検証する準備が整いました。ご質問がございましたらお気軽にコメントください。
完全なコードを確認したい場合は、Github リポジトリにアクセスしてください。
追伸: これは、SCU の ACM 支部で私が行ったワークショップのブログ投稿版です。
以上がPython による生成 AI の活用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。
