# 評估驅動開發: 生成式 AI 軟體不確定性的解決方法 - 張文鈿(ihower)
{%hackmd @HWDC/BJOE4qInR %}
>#### 》[議程介紹](https://hwdc.ithome.com.tw/2024/session-page/3186)
>#### 》[講者部落格](https://ihower.tw/blog/)
>#### 》[填寫議程滿意度問卷|回饋建言給辛苦的講者](https://forms.gle/r31vc35yHH9gsFr86)
[投影片](https://www.slideshare.net/slideshow/eval-driven-development-edd-ai/271729781)
## 從 PoC 階段到 Production 還是很有難度
# LLM-based AI 生成式 AI 是機率軟體
- AI是機率軟體
確定性軟體與可解釋性軟體的可解釋性一高一低
擔心的地方:確定性軟體(有BUG),機率性軟體(有幻覺)
如何應對不確定性:評估
甚麼是評估 Evaluation?
1. 準備很多 Examples
2. 每個 example 實際執行
3. 根據輸出,進行評估 (ex.token成本)
有標準答案的 Examples
客觀的準確率分數
實驗不同的 Prompt 寫法
實驗不同 LLM 模型
5-Level 開發成熟度等級
| Level0 | Level1 | Level2 | Level3 | Level4 |
| ---------------------- | ------ | ------ | ------ | ------ |
| 不寫測試 | 寫初始prompt | 寫基準prompt | | |
| 寫CODE後會測一下會動 | 測試輸出 | 準備不同情形下的測試 | | |
| 有測試計畫進行人工測試 | | | | |
| 寫自動化測試 | | | | |
| TDD | | |||
0. 寫code不測試
1. 寫code後測試一下會動
2. 有測試計畫,人工測試
3. 自動化測試
4. 先寫測試後寫 code (TDD)
code -> prompt
不要用 ChatGPT App 測試,會有 System Prompt,跟呼叫 API 不一樣
範例:Claude 的 Real World Prompt Course
在 GitHub 上
AI 可幫忙
- 生成測試案例
- 幫忙寫 prompt
用 prompt 來產 prompt => Meta-Prompt
* Claude -> XML
* OpenAI -> JSON
[prompt generator example on github](https://github.com/aws-samples/claude-prompt-generator)
讓 AI 生成測試資料
- few-shot examples
- 給 context
[論文出處](https://arxiv.org/abs/2406.04744)
提升性能的方式:
* 字數越多越好
* 描述詳細
* 使用英文
(講者舉了一個例子:由兩個範例變成一千個範例,性能就是直線往上疊加)
自動評估的類型
1. 可以用code自動打分
2. 沒有標準答案:翻譯
3. 有參考資料、參考答案:RAG
例如使用 braintrust 評估框架
LLM 開發管理:
* LangSmith
* LangFuse
* [Braintrust](https://www.usebraintrust.com/)
評估 Prompt 的基本結構
[LLM Evaluation](https://www.philschmid.de/llm-evaluation)
HyDE 法
- 將用戶問題,轉成假設性的答案。用這個答案去檢索向量資料庫,目的是找出最相似的內容
[難題型](https://arxiv.org/abs/2406.04744)
誰來評估評估者
1. [Who Validates the Validators? Aligning LLM-Assisted Evaluation of LLM Outputs with Human Preferences](https://arxiv.org/abs/2404.12272)
2. https://blog.langchain.dev/aligning-llm-as-a-judge-with-human-preferences/
3. https://github.com/Eladlev/AutoPrompt
[Star Trek](https://arxiv.org/abs/2402.10949)
這篇論文超好玩的感覺
淺談 Prompt 自動化
1. [gpt-prompt-engineer](https://github.com/mshumer/gpt-prompt-engineer)
2. DSPy
3. Textgrad
4. https://cohere.com