---
# System prepended metadata

title: Day-27
tags: [IThome鐵人賽2023]

---

# Day-27 OpenAI API 實作 part 2


## 0. 前言
接著前一天的進度，繼續 fighting !
- 首先安裝OpenAI相關的函式庫並引入
```
!pip install openai
```
```
import openai
```
- 接著設定變數API Key，記得雙引號內換成自己的API
```
openai.api_key = "sk-NeverGannaGiveUUpNeverGannaLetUDown"
```


## 1. 發送請求，取出回應內容
### 1.1. 發出請求
- 這是一段簡易的示範語法
```
openai.Completion.create{
    model = "text-davinci-003",
    prompt = "hello"
}
```
- Completion的位置可以根據需求換成以下幾種(需微調內容選項):
    1. ChatCompletion
    2. Image
    3. Audio
    4. ...等等
- 這是到目前為止的樣子，看到它有成功回應就能繼續下一步了。
![](https://hackmd.io/_uploads/By41lroCn.png)


### 1.2. 取出回覆內容
- 首先將上一段的示範語法存進一個名為`res`的變數中，方便我們等下做資料提取
```
res = openai.Completion.create(
    model = "text-davinci-003",
    prompt = "hello"
)
```
- 接著再把的`res`裡字有點多的資料提取出我們要的部分
```
print(res["choices"][0]["text"])
```
- 簡單的來回溝通就完成了
![](https://hackmd.io/_uploads/r16b9rjR3.png)

### 1.3. 模型選擇
- 在Documentation裡的models裡可以看到所有能使用的模型，可以根據不同需求使用不同模型及功能。
![](https://hackmd.io/_uploads/HysaqBoR3.png)




## 2. 隱藏API Key
API Key是一個用於身份驗證的敏感資訊，就像是你家的鑰匙一樣。假如之後你的程式碼像我一樣公開給大家或是上傳到公開的空間像是GitHub之類的地方，讓別人得知你的API Key並拿來使用的話，輕則額度被大量使用導致荷包失血，重則被濫用在違反規則的地方導致帳號被停權。所以這邊教大家一個最簡單隱藏API Key的方法。
- 先在桌面新增一個文字文件，並將它命名為`.env`，之後再設定`API_KEY = sk-NeverGannaGiveUUpNeverGannaLetUDown`
![](https://hackmd.io/_uploads/H19Q0HsC3.png)
- 接著將這個檔案直接拉進colab側邊欄的檔案裡，記得把眼睛打開才看的到隱藏的(檔名前面有.的)檔案。(雖然你的眼睛也要打開，不過我說的是那個按鈕)
![](https://hackmd.io/_uploads/B1sdy8i03.png)
- 接著需要安裝一個套件叫做`python-dotenv`，順序建議可以放在前面的其他install旁邊。
```
!pip install python-dotenv
```
- 安裝完一樣引入，讀取`.env`檔，最後將剛才設定的api key帶入dotenv語法
```
from dotenv import dotenv_values
openai.api_key = dotenv_values('.env')["API_KEY"]
```
- 目前長這樣
![](https://hackmd.io/_uploads/ryNy7UiC2.png)


## 3. 其他參數設定
- 這邊稍微提一下，API的價格計算是基於它回覆的token數量來決定的(至於token是什麼，詳細的假如最後字數不夠我再來水uwu)，所以假如它塞給你一堆廢話想讓你多付錢(就像計程車繞遠路一樣)這時候你可以給他一個**停止的條件**就不會浪費錢了。所以接下來會教各位幾個常用的參數。


### 3.1. max_tokens
- 這邊就是只讓他最多講10個token，所以它直接被我強制停止瑞克搖。
![](https://hackmd.io/_uploads/BJETD8sC3.png)


### 3.2. stop
- 這個參數條件是只要出現規定字元"s"就會停止
![](https://hackmd.io/_uploads/rkssL8sA3.png)



### 3.3. n
- 這個參數不是省token用的，反而是增加回答用的
![](https://hackmd.io/_uploads/HkOEu8jA2.png)

### 3.4. echo
- 這個參數可以讓它回覆時連帶顯示出你的問題，且不會消耗token
![](https://hackmd.io/_uploads/r1c5dIsAn.png)



## 4. 結語
到今天為止我們已經可以進行簡單的API呼叫及回應，接下來只要再花點時間搞一下HTML和CSS的部分就可以變成一個完成品了，但這部分不在本系列範圍中，所以有興趣的各位可以自己去搞搞看。
[【OpenAI】1小時初學者教學-製作你的AI app](https://youtu.be/8GsLbNdbV6c?si=6287N7vmWwG-OFW7)