網頁

2023年2月7日 星期二

用Python串接OpenAI API

 首先,透過pip安裝openai


 程式碼,透過這程式碼向OpenAI 發送訊息:

openai.Completion.create 方法,方法的參數說明如下(參考Create completion ):
engine:AI 所使用的引擎名稱,如果是以自然語意為主,目前最新的使用 text-davinci-003
prompt:要傳送的句子會詞彙。
max_tokens:希望 AI 回傳的最大字數,預設 128。
temperature:隨機文字組合,範圍 0~1,預設 0.5,0 表示不隨機,1 表示完全隨機。
language:機器人處理的「程式語言」,預設 python,可設定 javascript、java、csharp、golang、ruby、php、cpp。

第2行 openai.api_key 要填入你自己的API-key,取得API-key的方式如下:

到Personal下拉選單,選擇View API keys

然後會出現下面的畫面:

按下 + Create new secret key ,就會有一組API-key 產生,複製下來貼到程式碼即可。

這樣就可以建立一個機器人聊天的環境,我們來試一下:

我提問了3個問題,彩虹顏色的組成,IG流行的主題,講個笑話

串接OpenAI 操作起來還蠻簡單的,只要索取 API-key 就可以使用, 而且是免費的。




如何挑選紅酒

 

面對賣場酒架上不同產區不同品種的紅酒要如何挑選一瓶適合自己的紅酒呢?

1. 決定費用限制:第一步是決定你的預算,紅酒的價格會因為品種、產地、酒莊等而不同,而你需要確定一個你可以承受的費用限制。
2. 了解紅酒的品種:紅酒的品種可以從產地、品牌、成分等不同的種類中選擇,你需要熟悉不同品種的紅酒,並且了解它們的風味和口感,以便做出適當的選擇。
3. 酒評的評價:可以參考紅酒專家的評價,以獲取相關的消息,讓你能夠更好地了解紅酒的品質和價格,並挑選出最佳的紅酒。
4. 深入了解你最喜歡的酒款:你也可以深入瞭解你最喜歡的酒款,從中了解它的歷史、風土、酒莊等詳細資訊,以便對你的選擇有更深入的了解。


不同的葡萄所釀造出的紅酒風味也有所不同,葡萄的品種有這幾種:Cabernet Sauvignon(卡本內蘇維農),Syrah(希哈),Tempranillo(田帊尼優),Merlot(梅洛),Pinot Noir(黑皮諾),
一般來說口感大致上如下:
Cabernet Sauvignon:Cabernet Sauvignon是一種深色紅葡萄品種,它帶有濃郁的黑莓,黑加侖子,甘草和香料的風味。它的口感也很厚實,帶有細膩的單寧,並且帶有持久的餘韻。
Syrah:Syrah是一種深色紅葡萄品種,它有著濃郁的果香和香料,加上柔和的單寧口感,並且帶有辛辣的口感。
Merlot:Merlot是一種深色紅葡萄品種,它有著濃郁的莓果和香料味,口感柔滑,帶有微苦的單寧,並且有持久的餘韻。
Pinot Noir:Pinot Noir是一種深色紅葡萄品種,它有著濃郁的草莓,覆盆子,甘草和香料的風味,口感柔滑,帶有細膩的單寧,並且有持久的餘韻。
Tempranillo:Tempranillo是一種深色紅葡萄品種,它有著濃郁的黑加侖子,藍莓,黑梅,甘草和香料的風味,而且酒莊也很深厚,並且帶有微苦的口感,並且持久的收結。

哪一種比較適合新手入門品嚐?
新手入門品嚐紅酒時,建議選擇Merlot或Pinot Noir,因為它們的口感比較柔滑,帶有細膩的單寧,而且風味也比較溫和,比較適合新手入門品嚐。

那一般的紅酒開瓶後需要醒酒嗎?
一般紅酒開瓶後,是不需要醒酒的,因為紅酒的酒精含量比白酒低,所以開瓶後可以直接飲用。但是,如果你想要更好地發揮紅酒的口感和品質,建議可以在開瓶前將酒放在室溫下醒酒,這樣可以讓紅酒的風味更加充分發揮。

紅酒開瓶後可以存放多久?
紅酒開瓶後,建議在兩小時內飲用完畢,如果無法在兩小時內飲用完畢,可以將酒放在冰箱中存放,最多可以存放3-4天。

2023年1月29日 星期日

波布雷特修道院酒莊田帕尼優希哈紅酒

今晚把年前在酒條通買的 波布雷特修道院酒莊田帕尼優希哈紅葡萄酒 開來嚐嚐。

 

這支一樣是產自西班牙,酒條通售價 $899,酒標以修道院內的歌德式彩色花窗玻璃來傳遞修道院的歷史和卓越的工藝。


瓶封上的小孔可以讓微量的氧氣透過木塞與酒液接觸,這有利於葡萄酒在瓶中的發育和成熟,使葡萄酒的口感更佳飽滿。

 

葡萄品種是田帕尼優Tempranillo、希哈Syrah 混釀,酒色呈暗寶石紅,酒精濃度14%。喝起來丹寧輕微,有著淡淡果香,口感相當細緻,適合搭配較清淡的餐點。

產區:DO Conca deBarbera
葡萄品種:Tempranillo,Syrah

香氣:帶有成熟的紅色水果,蜜餞和香料的香氣
口感:帶有令人愉悅的果味感,均衡的酸度,可帶來清新感和良好的口感。
餘味悠長,給人留下成熟果香的芬芳。
佐餐:搭配清淡的肉類,蔬菜和奶酪。


2023年1月1日 星期日

西班牙亞曼薩ALMANSA城堡紅酒

這隻西班牙亞曼薩(ALMANSA)城堡紅酒一樣是美廉社買的平價酒之一,雖然只要$225但是我覺得是蠻對得起他的價格的。

 西班牙 亞曼薩(ALMANSA)城堡紅酒

酒精濃度14%,微澀很適合一般大眾飲用,由於丹寧輕微只要不是搭配太重口味的食物,基本上都還蠻好喝的,或許你還能感受到她豐富的口感。


2022年12月28日 星期三

西班牙千禧酒莊田帕尼優紅酒

 美聯社自稱巷口酒窖,沒想到這支 $265 的酒還有層次口感。

 西班牙 LA BARBACOA 田帕尼優 (Tempranillo) 紅酒

2022年11月20日 星期日

Debian11 安裝Sublime Text

Sublime text 是一個用於編寫程式的編輯器。 它是用 C++ 和 python 編寫的。 它允許使用不同的套件來擴展其功能。這篇會說明如何使用命令行方法在 Debian 11 bullseye 發行版上安裝 sublime text 3。 

Step1:更新系統套件
$ sudo apt update

Step2:將Sublime Text 添加至 repository
$ echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

然後更新系統
$ sudo apt update
你會看到更新 repository 中多了2項關於 Sublime Text 的清單


將 GPG 密鑰下載到您的系統:
$ wget -q -O - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add



Step3:安裝 Sublime Text
$ sudo apt-get install sublime-text

開啟Sublime Text後



 

 

 

 

如果要移除Sublime Text 可以用下面方式來完整移除:
$ sudo apt remove sublime-text
$ sudo rm /etc/apt/sources.list.d/sublime-text.list



2022年5月30日 星期一

正規式的應用:刪除換行符

假日接到以前同事的來電,要我幫忙處理一個檔案問題,檔案內容如下(共1百78萬多行):
要將單數行的資料移到偶數行尾端,變成下面形式:

如果用程式來跑就是將41行開始到檔案最後的單數行換行符號(\n)拿掉,偶數行自然就會接在單數行後面,然後將結果輸出到新檔案。
Perl程式如下:
#!/usr/bin/perl
$file_name = shift @ARGV;
print "Input file:$file_name\n";
open(DATA, '<', $file_name) or die $!;
$new_file = "new_".$file_name;
open(OUT, ">$new_file");
$line_count = 1;
while(<DATA>) {
  if ($line_count <= 40) {
    print OUT $_
  }
  if ($line_count > 40) {
    if (($line_count % 2 != 0) && (! /^END/)) {
      #chomp; #也可以這樣寫
      s/\n//g;
      print OUT $_;
    }
    else {
      print OUT $_;
    }
  }
  $line_count += 1;
}
print "Output file:$new_file\n";
 

程式執行大約花費2.23s

這程式有個小缺點就是如果要刪除換行的字串不是從40行開始就要修改一次程式,所以我想用正規式來解決這問題。
首先要定義這個字串,下面這個字串:
01XXXXX1XXXX XX XXXX XXXXXXXX X XXXXXXX X XXXXXXX X 10X1X1X XXXXX XX X
和這字串:
XXX X XX XX; /* 1 */
的差異是要移除換行符號的字串開頭都是0或1然後後面接著X或H或L組成的12個字元的樣式,後面不管什麼一直到結尾,因此我定義為:
's/(^[01XHL]{12}\s.*)\n/$1/g'

 
在Perl搜尋替換的語法是:s/搜尋樣式/替換字/g
搜尋樣式:^是開頭,[ ]括號括起來的是0或1或X或H或L,{ }裡面數字表示出現12次,然後\s表示空白,. 是不管什麼字元,*是匹配0次或多次的任何字符,
( )小括號括起的是放進分組,接著是\n換行。
替換字:$1表示用第一個分組替換。


因此可以寫成:(原始檔用.bak備份)
perl -p -i.bak -w -e 's/(^[01XHL]{12}\s.*)\n/$1/g' file_name
執行結果花費3.3s

接著用 diff 指令檢查2個結果是否相同 :
沒有輸出就是表示2個檔案內容是相同的。

雖然用正規式處理會稍微多花費一些時間,但是會很靈活,對於處理這類文字樣式的檔案是非常好的利器,你該不會想按90萬次 Del 鍵吧。