iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
佛心分享-SideProject30

Vibe Code與context engineering來打造個人專屬夥伴系列 第 3

第三日:Gemini從專案起飛到 Flash 墜機,免費午餐的代價

  • 分享至 

  • xImage
  •  

第三日:Gemini從專案起飛到 Flash 墜機,免費午餐的代價

昨天還在迴圈裡刷「我還在」,今天我打算認真一點,來打造我的 Python Client 專案。
任務很單純:

  • 用 Direct Line 串接 Copilot Studio Agent
  • 從 CSV 一題一題丟問題
  • 收集回答,整理成 Report

想得很美,實際上卻是一場「從天堂到地獄」的驚險旅程。


前半場:Gemini CLI 幫我生出一個專案

CLI 開場白很有氣勢,ASCII Art 排場一流,還給了幾條小貼士。
我開門見山:

Let's create a project that can connect to copilot studio agent with directline.
Read questions from csv, send to agent, collect answers, generate report.

結果 CLI 還真懂,幫我規劃八大步驟:建立專案、安裝套件、讀 CSV、呼叫 Direct Line API、收回答、最後生成報表。
一步步照做,requirements.txtquestions.csvmain.py 全部寫好,甚至還貼心加上:

report_df = pd.DataFrame(report_data, columns=[
  "question","response","starttime","usetime","username","conversationid"
])
report_df.to_csv("report.csv", index=False)

我看著這段程式碼,內心只有一個字:


中場加碼:報表真的出來了

我真的把伺服器跑起來,丟了一個測試:

curl -X POST "http://localhost:7979/start_test?username=TestUser"

結果 CLI 回我:

{"message":"Test completed. Report generated in report.csv"}

打開 report.csv,看到表格裡乖乖排著:

question response starttime usetime username conversationid
What is your name? 目前沒有相關資訊顯示我的名稱... 2025-09-17 13:21:36 12.6 TestUser 7zFqfkZ9gb19…
What can you do? 您好,今天有什麼可以為您效勞… 2025-09-17 13:21:48 5.6 TestUser DMLCWJE7Jps…

那一瞬間,我真的感動到差點想請 CLI 吃一頓好的。


下半場:點數沒了,Flash 變災難

正當我準備繼續壯大功能時,系統突然冒出:

Error processing question 'What is your favorite color?': HTTPSConnectionPool(host='directline.botframework.com', port=443): Max retries exceeded

沒錯——Token 用光了 → Gemini-Pro 下台一鞠躬 → 換成 Gemini-Flash

結果 Flash 模式不只笨,還完全搞不清楚 Direct Line WebSocket 該怎麼連

  • 我原本參考文件,把 token 硬塞到 URL:

    wss://directline.botframework.com/v3/directline/conversations/{id}/stream?watermark=0&token={conversation_token}
    

    → 伺服器直接回我 404

  • Flash 模式還一本正經跟我說「可以試試 query string」,結果依然失敗。

  • 真相其實很簡單:

    1. 正確的 URL 不能自己拼,要用 REST POST /conversations 回傳的 streamUrl
    2. Token 不能放在 query,要放在 header:
      extra_headers=[("Authorization", f"Bearer {conversation_token}")]
      

但 Flash 模式完全解不出來,搞得我在終端機前面一臉黑人問號。


今日心得

  1. Token 就是燃料:油箱沒油,保時捷只能停路邊。
  2. 免費午餐的真實代價:吃不到飽,還可能直接拉斷線。
  3. Flash 模式 = 閃退模式:不是給你加速,而是帶你去 404。

收兵!

原本想大展拳腳,結果被「點數清零」打斷。
今天只能宣布:

「本回合結束,明日再戰!」

不過至少我收穫了:

  • 專案雛型成形
  • 報表跑得出來
  • 體驗了「AI 從天才秒變路人」的魔幻時刻

明天,就算要掏錢,我也要讓我的 Client 繼續進化!💸


上一篇
第二日:前期調研,牛刀小試
下一篇
第四日:錢包扁扁的課金地獄,工程師的覺醒術
系列文
Vibe Code與context engineering來打造個人專屬夥伴4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言