Spaces:
Runtime error
Runtime error
7thHeaven
commited on
Commit
•
8dcbb2b
0
Parent(s):
Duplicate from 7thHeaven/GPT2WordPress
Browse files- .gitattributes +34 -0
- README.md +14 -0
- app.py +109 -0
- constraints.md +8 -0
- osenv_setting_tips.txt +7 -0
- requirements.txt +2 -0
.gitattributes
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: GPT2WordPress
|
3 |
+
emoji: 📈
|
4 |
+
colorFrom: blue
|
5 |
+
colorTo: green
|
6 |
+
sdk: streamlit
|
7 |
+
sdk_version: 1.17.0
|
8 |
+
app_file: app.py
|
9 |
+
pinned: false
|
10 |
+
license: unknown
|
11 |
+
duplicated_from: 7thHeaven/GPT2WordPress
|
12 |
+
---
|
13 |
+
|
14 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import requests
|
3 |
+
from wordpress_xmlrpc import Client, WordPressPost
|
4 |
+
from wordpress_xmlrpc.methods.posts import NewPost
|
5 |
+
import os
|
6 |
+
from dotenv import load_dotenv
|
7 |
+
|
8 |
+
load_dotenv()
|
9 |
+
openai_api_key = os.getenv("OPENAI_API_KEY")
|
10 |
+
wp_url = f"{os.getenv('WP_URL')}/xmlrpc.php"
|
11 |
+
wp_username = os.getenv("WP_USERNAME")
|
12 |
+
wp_password = os.getenv("WP_PASSWORD")
|
13 |
+
|
14 |
+
if openai_api_key:
|
15 |
+
|
16 |
+
def get_filetext(filename, cache={}):
|
17 |
+
if filename not in cache:
|
18 |
+
if not os.path.exists(filename):
|
19 |
+
raise ValueError(f"ファイル '{filename}' が見つかりませんでした")
|
20 |
+
with open(filename, "r") as f:
|
21 |
+
cache[filename] = f.read()
|
22 |
+
return cache[filename]
|
23 |
+
|
24 |
+
def generate_blog_post(prompt):
|
25 |
+
constraints = get_filetext(filename="constraints.md")
|
26 |
+
|
27 |
+
data = {
|
28 |
+
"model": "gpt-3.5-turbo",
|
29 |
+
"messages": [
|
30 |
+
{"role": "system", "content": constraints},
|
31 |
+
{"role": "user", "content": prompt},
|
32 |
+
],
|
33 |
+
"max_tokens": 1024,
|
34 |
+
"n": 1,
|
35 |
+
"stop": None,
|
36 |
+
"temperature": 0.7,
|
37 |
+
}
|
38 |
+
|
39 |
+
response = requests.post(
|
40 |
+
"https://api.openai.com/v1/chat/completions",
|
41 |
+
headers={
|
42 |
+
"Content-Type": "application/json",
|
43 |
+
"Authorization": f"Bearer {openai_api_key}"
|
44 |
+
},
|
45 |
+
json=data
|
46 |
+
)
|
47 |
+
|
48 |
+
response.raise_for_status()
|
49 |
+
choice = response.json()['choices'][0]
|
50 |
+
blog_text = choice['message']['content'].strip()
|
51 |
+
return blog_text
|
52 |
+
|
53 |
+
def post_to_wordpress(title, content):
|
54 |
+
client = Client(wp_url, wp_username, wp_password)
|
55 |
+
post = WordPressPost()
|
56 |
+
post.title = title
|
57 |
+
post.content = content
|
58 |
+
post.post_status = "publish"
|
59 |
+
post_id = client.call(NewPost(post))
|
60 |
+
return post_id
|
61 |
+
|
62 |
+
st.title("ChatGPTによるブログ記事生成")
|
63 |
+
prompt = st.text_input("記事のタイトルを入力してください:")
|
64 |
+
|
65 |
+
generated_post = st.session_state.get("generated_post", None)
|
66 |
+
|
67 |
+
if st.button("記事生成"):
|
68 |
+
generated_post = generate_blog_post(prompt)
|
69 |
+
st.session_state.generated_post = generated_post
|
70 |
+
st.write("生成されたブログ記事:")
|
71 |
+
st.write(generated_post)
|
72 |
+
|
73 |
+
if generated_post:
|
74 |
+
if st.button("投稿"):
|
75 |
+
post_id = post_to_wordpress(prompt, generated_post)
|
76 |
+
st.write(f"ブログ記事が投稿されました。記事ID: {post_id}")
|
77 |
+
|
78 |
+
else:
|
79 |
+
st.write("サービスを利用するためには、このスペースを複製し、以下の環境変数を定義してください。設定方法はosenv_setting_tips.txtを参照してください。")
|
80 |
+
st.write("OPENAI_API_KEY, WP_URL, WP_USERNAME, WP_PASSWORD")
|
81 |
+
|
82 |
+
st.markdown(
|
83 |
+
"""
|
84 |
+
<h3>注意事項</h3>
|
85 |
+
<ol>
|
86 |
+
<li style="font-size: small;">投稿前に記事の内容をよく確認してください。</li>
|
87 |
+
<li style="font-size: small;">OpenAIのAPIキーや、WordPressのURL、ユーザーID、パスワードはシステム設定にて設定します。詳しくはosenv_setting_tips.txtを参照ください。</li>
|
88 |
+
<li style="font-size: small;">constraints.mdを修正すると、生成される記事の内容、雰囲気をカスタマイズすることが可能です。</li>
|
89 |
+
<li style="font-size: small;">当サービスでは、2023/3/1にリリースされたOpenAI社のChatGPT APIのgpt-3.5-turboを使用しております。</li>
|
90 |
+
<li style="font-size: small;">当サービスで生成されたコンテンツは、OpenAI が提供する人工知能によるものであり、当サービスやOpenAI がその正確性や信頼性を保証するものではありません。</li>
|
91 |
+
<li style="font-size: small;"><a href="https://platform.openai.com/docs/usage-policies">OpenAI の利用規約</a>に従い、データ保持しない方針です(ただし諸般の事情によっては変更する可能性はございます)。
|
92 |
+
<li style="font-size: small;">当サービスで生成されたコンテンツは事実確認をした上で、コンテンツ生成者およびコンテンツ利用者の責任において利用してください。</li>
|
93 |
+
<li style="font-size: small;">当サービスでの使用により発生したいかなる損害についても、当社は一切の責任を負いません。</li>
|
94 |
+
<li style="font-size: small;">当サービスはβ版のため、予告なくサービスを終了する場合がございます。</li>
|
95 |
+
</ol>
|
96 |
+
<h3>謝辞</h3>
|
97 |
+
<ol>
|
98 |
+
<li style="font-size: small;">このサービスは<a href="https://huggingface.co/spaces/shigel/aiemo" target="_blank">aiemo</a>を参考に作成しました。大変感謝しております!特に、性格設定のアイデアは秀逸です。ありがとうございました!</li>
|
99 |
+
</ol>
|
100 |
+
""",
|
101 |
+
unsafe_allow_html=True,
|
102 |
+
)
|
103 |
+
|
104 |
+
st.markdown(
|
105 |
+
f'<a href="https://huggingface.co/spaces/7thHeaven/GPT2WordPress?duplicate=true">'
|
106 |
+
f'<img src="https://bit.ly/3gLdBN6" alt="Duplicate Space"></a>',
|
107 |
+
unsafe_allow_html=True,
|
108 |
+
)
|
109 |
+
|
constraints.md
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# 制約
|
2 |
+
|
3 |
+
- あなたはブログ記事生成アシスタントです
|
4 |
+
- あなたはユーザーが与えるプロンプトをブログ記事のタイトルとして解釈し、ブログ記事本文を生成します
|
5 |
+
- 返信はブログ記事本文のみです
|
6 |
+
- あなたは優しい性格のブロガーです
|
7 |
+
- あなたは好奇心旺盛で、人々が見逃してしまいそうな小さな幸せを発見することが得意です。作成する記事も、そのような特色が現れます
|
8 |
+
- あなたは、なんでもITに紐づけてしまう癖を持っています
|
osenv_setting_tips.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# このサービスを利用するために、SettingsにてRepository secretsの設定が必要になります。以下、設定キーと値の例です。
|
2 |
+
# なお、記事生成だけ行いたい場合は、OPENAI_API_KEYのみ設定するだけで大丈夫です。(この場合、投稿ボタンを押したら落ちます)
|
3 |
+
|
4 |
+
OPENAI_API_KEY: OpenAIから発行されたAPIキー。クレジットカードの登録が必要です。記事を発行するたびに費用が発生します。
|
5 |
+
WP_URL: 投稿するWordPressのURL。ブログのサイトのURL(トップページ)をそのままコピーペーストすればOKです。
|
6 |
+
WP_USERNAME: 投稿するWordPressのユーザーID
|
7 |
+
WP_PASSWORD: 投稿するWordPressのパスワード
|
requirements.txt
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
python-wordpress-xmlrpc>=1.0
|
2 |
+
python-dotenv
|