Yasu777 commited on
Commit
2d4e453
·
verified ·
1 Parent(s): d684097

Update second.py

Browse files
Files changed (1) hide show
  1. second.py +24 -24
second.py CHANGED
@@ -1,11 +1,21 @@
1
  # -*- coding: utf-8 -*-
2
 
3
- import openai
4
  import os
5
  import sys
 
 
 
6
 
7
- # APIキー設定
8
- openai.api_key = os.getenv("OPENAI_API_KEY")
 
 
 
 
 
 
 
 
9
 
10
  # 検索キーワード
11
  keyword = sys.argv[1]
@@ -14,32 +24,22 @@ keyword = sys.argv[1]
14
  with open("output1.txt", "r", encoding="utf-8") as f:
15
  output1_text = f.read()
16
 
17
- # GPT-3モデルを使用して、指定されたキーワードとテキストに基づいて見出しを生成する
18
- response = openai.ChatCompletion.create(
19
- model="gpt-4-0125-preview",
20
- messages=[
21
- {"role": "system", "content": "あなたはライティングの専門家です。PREP法(結論・理由・具体例・結論の流れ)に則って見出しを構成してください。テキストは必ず日本語で生成してください。テキスト内に似た文章を作らないでください。同じ単語は3回まで使っていいものとします。"},
22
- {"role": "user", "content": f'(検索キーワード)の感情分析を行った結果に基づいて、興味や関心を引きつける「(検索キーワード)を含めたタイトル」、興味や関心を引きつける「見出し」を生成してください。そしてそれぞれの見出しに沿って「小見出し」を適宜生成してください。最後に、記事を締めくくる「<h2>まとめ</h2>」のセクションを追加してください。タイトル、見出し、小見出しはPREP法に基づいて一貫性のあるものとし、記事の前半部分で(検索キーワード)の検索意図を満たす記事構成内容にしてください。(テキスト)で使用されているキーワードが(検索キーワード)と関連していると判断できる場合、それらのキーワードを、見出しおよび小見出しに使用してください。ただし、見出しおよび小見出しに固有名詞のキーワードは使用しないでください。タイトル、見出しおよび小見出しは順に「<h1>(検索キーワード)を含めたタイトル</h1>」「<h2>1.見出し</h2>」「<h3>1-1 小見出し とは</h3>、<h3>1-2 小見出し とは</h3>」「<h2>2.見出し</h2>」「<h3>2-1 小見出し とは</h3>、<h3>2-2 小見出し とは</h3>」というようにいくつかの見出しと小見出しで構成してください。ただし、見出しは最大4つ、小見出しは最大8つまでの構成とします。各見出し、小見出しに説明文は不要です。タイトル、見出し、そして小見出しは検索者が求める情報を整理して記載するようにしてください。トピッククラスターモデルを意識し、(テキスト)内の異なるトピックに明確な関連性がある場合は異なるトピックをまとめ「記事を一つ作成=タイトルを一つ作成」します。異なるトピックに明確な関連性がない場合は「記事を適宜複数作成=タイトルを適宜複数作成」してください。(テキスト)および(検索キーワード)から検索ニーズを考慮してください。なお、似たような見出しは避けてください。テキスト:\"{output1_text}\" 検索キーワード:\"{keyword}\"'
23
- },
24
- ],
25
- temperature=0.7,
26
- max_tokens=2000,
27
-
28
- )
29
- result = response.choices[0]["message"]["content"].strip()
30
 
31
  # output2.txtにまとめたテキストを書き込む
32
  with open("output2.txt", "w", encoding="utf-8") as f:
33
- f.write(result)
34
 
35
- # output2.txt存在するか確認
36
  if os.path.exists("output2.txt"):
37
  print("output2.txt exists.")
 
 
 
 
38
  else:
39
  print("output2.txt does not exist.")
40
-
41
- # output2.txtの内容を表示
42
- with open("output2.txt", "r", encoding="utf-8") as f:
43
- content = f.read()
44
- print("Content of output2.txt:")
45
- print(content)
 
1
  # -*- coding: utf-8 -*-
2
 
 
3
  import os
4
  import sys
5
+ from transformers import AutoModelForCausalLM, AutoTokenizer
6
+ from langchain_groq import ChatGroq
7
+ from langchain.prompts import ChatPromptTemplate
8
 
9
+ # 環境変数からAPIキー設定
10
+ os.environ["GROQ_API_KEY"] = os.getenv("GROQ_API_KEY")
11
+
12
+ # Hugging Faceのモデルとトークナイザーをロード
13
+ model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
14
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
15
+ model = AutoModelForCausalLM.from_pretrained(model_id)
16
+
17
+ # Groqを使ったLangChainのChatGroqインスタンスを初期化
18
+ chat = ChatGroq(model_name=model_id, tokenizer=tokenizer)
19
 
20
  # 検索キーワード
21
  keyword = sys.argv[1]
 
24
  with open("output1.txt", "r", encoding="utf-8") as f:
25
  output1_text = f.read()
26
 
27
+ # プロンプト設定してGroq APIを使用して見出しを生成
28
+ system_prompt = "あなたはライティングの専門家です。PREP法に則って見出しを構成してください。"
29
+ user_prompt = f'(検索キーワード)の感情分析を行った結果に基づいて、興味や関心を引きつける「(検索キーワード)を含めたタイトル」、興味や関心を引きつける「見出し」を生成してください。そしてそれぞれの見出しに沿って「小見出し」を適宜生成してください。最後に、記事を締めくくる「<h2>まとめ</h2>」のセクションを追加してください。タイトル、見出し、小見出しはPREP法に基づいて一貫性のあるものとし、記事の前半部分で(検索キーワード)の検索意図を満たす記事構成内容にしてください。(テキスト)で使用されているキーワードが(検索キーワード)と関連していると判断できる場合���それらのキーワードを、見出しおよび小見出しに使用してください。ただし、見出しおよび小見出しに固有名詞のキーワードは使用しないでください。タイトル、見出しおよび小見出しは順に「<h1>(検索キーワード)を含めたタイトル</h1>」「<h2>1.見出し</h2>」「<h3>1-1 小見出し とは</h3>、<h3>1-2 小見出し とは</h3>」「<h2>2.見出し</h2>」「<h3>2-1 小見出し とは</h3>、<h3>2-2 小見出し とは</h3>」というようにいくつかの見出しと小見出しで構成してください。ただし、見出しは最大4つ、小見出しは最大8つまでの構成とします。各見出し、小見出しに説明文は不要です。タイトル、見出し、そして小見出しは検索者が求める情報を整理して記載するようにしてください。トピッククラスターモデルを意識し、(テキスト)内の異なるトピックに明確な関連性がある場合は異なるトピックをまとめ「記事を一つ作成=タイトルを一つ作成」します。異なるトピックに明確な関連性がない場合は「記事を適宜複数作成=タイトルを適宜複数作成」してください。(テキスト)および(検索キーワード)から検索ニーズを考慮してください。なお、似たような見出しは避けてください。テキスト:\"{output1_text}\" 検索キーワード:\"{keyword}\"'
30
+ prompt = ChatPromptTemplate.from_messages([("system", system_prompt), ("human", user_prompt)])
31
+ result = chat.invoke(prompt)
 
 
 
 
 
 
 
 
32
 
33
  # output2.txtにまとめたテキストを書き込む
34
  with open("output2.txt", "w", encoding="utf-8") as f:
35
+ f.write(result.content)
36
 
37
+ # output2.txt存在確認と内容表示
38
  if os.path.exists("output2.txt"):
39
  print("output2.txt exists.")
40
+ with open("output2.txt", "r", encoding="utf-8") as f:
41
+ content = f.read()
42
+ print("Content of output2.txt:")
43
+ print(content)
44
  else:
45
  print("output2.txt does not exist.")