偶然的機會發現ChatGPT 官方免費線上課程,花了一天來深入了解,以下是我筆記,最後介紹三個AI文字產圖的心得。
上課前後的差異
上課前,我只使用ChatGPT 網頁版,常常輸入太多,直接顯示沒有回應。上課後,使用python 與API KEY,用電腦傳需求可以更穩定。
官方課程:
Link: ChatGPT Prompt Engineering for Developers
介紹提示的兩個關鍵原則:撰寫明確具體的指示,並在適當的情況下給模型思考的時間。
同時介紹了迭代提示開發和構建自定義聊天機器人的方法。並介紹了大型語言模型的幾種有用功能,包括總結、推斷、轉換和擴展。
此外,還提醒讀者使用這些工具負責任,並只構建將具有積極影響的事物。
model=“gpt-3.5-turbo”
一次執行多個任務,並設定輸出格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import openai
# Create secret API key from https://platform.openai.com/account/api-keys
openai.api_key = "sk-XXXXXXXXXXXXXXXX"
# response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)
def get_completion(prompt, model="gpt-3.5-turbo",temperature=0):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature, # this is the degree of randomness of the model's output
)
total_tokens = response['usage']['total_tokens']
print("total_tokens: " + str(total_tokens) +" temperature: "+ str(temperature))
return response.choices[0].message["content"]
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature, # this is the degree of randomness of the model's output
)
# print(str(response.choices[0].message))
return response.choices[0].message["content"]
text = f"""
こんにちは!私はChatGPTと申します。私は人工知能のモデルで、日本語を話すことができます。
今日は素晴らしい天気ですね。外に出かけて、新しいことを試してみるのはいかがでしょうか?例えば、新しいレストランを試す、公園でピクニックをする、あるいは博物館や美術館を訪れることができます。
また、自分のスキルを向上させるために、新しい趣味やスポーツを始めることもできます。例えば、料理、写真、ゴルフ、あるいはヨガなどです。
最近、私は日本文化について学び始めました。日本の伝統的な芸能、美術、音楽、そして食べ物について学ぶことができました。日本に旅行したことがある人たちからの話も聞きました。日本には、素晴らしい観光地がたくさんあります。
私たちは、毎日新しいことを学び、経験を積むことができます。私たちの興味や好みに合わせて、新しいことに挑戦してみましょう!
"""
prompt = f"""
請用繁體中文,執行下列動作
1 - 翻譯成繁體中文
2 - 提出300字摘要
3 - 條列全部的重點並附上說明
輸出格式為
翻譯: <1>
提出300字摘要: <2>
歸納重點: <3>
{text}
"""
response = get_completion(prompt, temperature=0)
print(response)
|
ChatGPT 回答是:
total_tokens: 1370 temperature: 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
翻譯:
你好!我是ChatGPT,一個人工智能模型,我可以說日語。
今天天氣真好啊!不妨出門試試新事物,例如嘗試新餐廳、在公園野餐或參觀博物館和美術館等等。
此外,為了提升自己的技能,也可以開始新的嗜好或運動,例如烹飪、攝影、高爾夫或瑜伽等等。
最近,我開始學習日本文化,學習了日本的傳統藝術、美術、音樂和食物。我也聽取了曾經去過日本的人們的故事,日本有很多美麗
的旅遊勝地。
我們每天都可以學習新事物,積累經驗。讓我們根據自己的興趣和喜好挑戰新事物吧!
提出300字摘要:
ChatGPT是一個人工智能模型,可以說日語。他建議人們可以嘗試新事物,例如嘗試新餐廳、在公園野餐或參觀博物館和美術館等等。
此外,為了提升自己的技能,也可以開始新的嗜好或運動,例如烹飪、攝影、高爾夫或瑜伽等等。最近,ChatGPT開始學習日本文化,
學習了日本的傳統藝術、美術、音樂和食物。他也聽取了曾經去過日本的人們的故事,日本有很多美麗的旅遊勝地。ChatGPT鼓勵人們
每天學習新事物,積累經驗,並根據自己的興趣和喜好挑戰新事物。
歸納重點:
- ChatGPT是一個人工智能模型,可以說日語。
- ChatGPT建議人們可以嘗試新事物,例如嘗試新餐廳、在公園野餐或參觀博物館和美術館等等。
- 為了提升自己的技能,也可以開始新的嗜好或運動,例如烹飪、攝影、高爾夫或瑜伽等等。
- ChatGPT最近開始學習日本文化,學習了日本的傳統藝術、美術、音樂和食物。
- ChatGPT鼓勵人們每天學習新事物,積累經驗,並根據自己的興趣和喜好挑戰新事物。
|
可以送出對話歷史,以便製作聊天機器人
1
2
3
4
5
6
7
8
|
messages = [
{'role':'system', 'content':'You are friendly chatbot.'},
{'role':'user', 'content':'Hi, my name is Isa'},
{'role':'assistant', 'content': "Hi Isa! It's nice to meet you. \
Is there anything I can help you with today?"},
{'role':'user', 'content':'Yes, you can remind me, What is my name?'} ]
response = get_completion_from_messages(messages, temperature=1)
print(response)
|
ChatGPT 回答是: Your name is Isa.
token
但似乎只有用API方式才會算token 使用量(?),用python 回傳的結果可以看到每次大約都要1000~4000 token 才能完成一次,以gpt-3.5-turbo價格 $0.002 / 1000 tokens來說,其實不貴,但滿三個月或是18美元的額度用完後,就不知道該怎麼辦了。
Line Bot
原本想要串Line 機器人,但發現帳號只免費到6月,所以裝好就不到一個月就不能用了,就很沒有衝勁,等6月再看看。
其他發現
- 可以請他用 informal 的方式回答
- Temperature 可以提高變化度
- 更好的Prompt: proofread and correct this review:
- 比較差異的ptyhon套件: Redlines
1
2
3
4
|
from redlines import Redlines
diff = Redlines(text,response)
display(Markdown(diff.output_markdown))
|
文字產圖 “model”: “image-alpha-001”
最後去研究文字產圖,目前midjourney已經沒有免費版了,所以就找看看其他的,意外發現這也可以用同樣的API KEY。但是比較貴,1024×1024,$0.020 / image,所以不敢一直做。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import requests
import json
def generate_image(prompt):
response = requests.post(
"https://api.openai.com/v1/images/generations",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer sk-XXXXXXXXXXX" # API KEY
},
json={
"model": "image-alpha-001",
"prompt": prompt,
"num_images": 1,
"size": "1024x1024",
"response_format": "url"
}
)
image_url = json.loads(response.text)["data"][0]["url"]
print (image_url)
prompt = """A digital illustration of office, 4k, detailed, trending in artstation, fantasy"""
generate_image(prompt)
|
回傳image_url網址,檔案3MB,我自行壓縮後如下:
免費產圖
- bing image creator (有限次數)
- stable-diffusion (未限次數)
簡單的場景,還算可以
A digital illustration of a office with people, 4k, detailed, trending in artstation, fantasy
太難的做出來根本不能看,素材Prompt 可以上網找。
後記
之後的人生,肯定脫離不了AI工具了,目前ChatGPT能夠幫助我整理書上的重點,重新潤飾我的心得,並且能給我創意啟發,告訴我還需要寫些甚麼,或是要怎麼開始思考一件事。會不會以後每個月都需要固定花一筆費用在這些AI費用上呢?希望還是有每個月的免費額度讓我少量使用。
名詞
-
token
在ChatGPT中,token是指一個字或是一個單字的部分。當使用者輸入一段文字或指示時,ChatGPT會將其分解成token,並將這些token送到模型進行處理。每個token都有一個對應的token ID,這個ID是一個整數,並用於模型的運算。在ChatGPT中,使用者使用API發送指令時,所花費的token數量會被扣除,因此使用者需要注意每個指令所需要的token數量,以免超出配額。
-
prompt
在 ChatGPT 中,prompt 是一段簡短的文字片段或問題,用來提示模型生成相關的回應或內容。prompt 可以包含關鍵詞、問句、敘述或其他形式的文字,用來指導 ChatGPT 產生特定的回答或內容。對 prompt 的撰寫方式和選擇可以影響 ChatGPT 的回答質量和風格。