發表文章

Easiest way | Playwright Page Object Model | Step by Step DEMO

 https://www.youtube.com/watch?v=rAec3mZFhF0&ab_channel=AutomationStepbyStep

WireMock

(WireMock 在Spring boot 啟動 by chatgpt)  1.在 Spring Boot main 方法中啟動 WireMock Maven: <dependency>     <groupId>com.github.tomakehurst</groupId>     <artifactId>wiremock-jre8</artifactId>     <version>2.35.0</version>     <scope>test</scope> </dependency> 2. 在 Spring Boot main 方法中啟動 WireMock import com.github.tomakehurst.wiremock.WireMockServer; import static com.github.tomakehurst.wiremock.client.WireMock.*; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application {     public static void main(String[] args) {         // 啟動 Spring Boot 應用         SpringApplication.run(Application.class, args);         // 啟動 WireMock 伺服器         WireMockServer wireMockServer = new WireMockServer(8081); //...

在跑Playwright 自動化測試時, 如何同時呼叫 Mockito工具, 去mock java 後端物件 prmsService, 請提供說明實作步驟和流程

 要在 Playwright 自動化測試執行期間,同時呼叫 Mockito 工具來 Mock Java 後端物件(如 prmsService ),需要將兩者環境有效集成。這通常通過啟動一個嵌入式 Java 測試伺服器(如 Spring Boot 測試框架)來模擬後端行為,然後讓 Playwright 測試與這個模擬的伺服器交互。 以下是詳細的分步實作流程: 完整實作步驟 步驟 1: 準備後端環境 引入依賴 確保後端 Java 專案具備以下依賴: xml 複製程式碼 < dependencies > <!-- Mockito --> < dependency > < groupId > org.mockito </ groupId > < artifactId > mockito-core </ artifactId > < version > 5.x.x </ version > < scope > test </ scope > </ dependency > < dependency > < groupId > org.mockito </ groupId > < artifactId > mockito-junit-jupiter </ artifactId > < version > 5.x.x </ version > < scope > test </ scope > </ dependency > <!-- Spring Boot 測試 --> < dependency > < groupId > org.springframework.boot </ groupId > < art...

RAG & RLHF

  https://www.solwen.ai/posts/what-is-rag RLHF 中文全名為「從人類反饋中強化學習」,顧名思義,就是讓 AI 模型在人類的指導下學習。簡單來說,我們將人類的智慧與機器的高效學習能力相結合,從而讓模型變得更加強大。那麼,這個過程是如何運作的呢? RLHF 就是一種類似的教學過程,但這次你是在教大型語言模型模型,而不是一個真正的人,而 RLHF 可以分為 Reinforcement Learning 和 Human Feedback 階段: 強化學習(Reinforcement Learning): 這是一種讓 AI 模型學習的方法。你可以想像機器(比如一個機器人或電腦程式)正在嘗試完成一個任務,比如下棋、駕駛車輛或進行對話。每當機器做出好的決策,它就得到一些積分(獎勵)。如果做了不好的決策,它可能得不到積分,或者失去一些積分。這個過程幫助機器學習怎樣更好地完成任務。 人類反饋(Human Feedback): 這裡的關鍵是有真實的人來幫助指導這個學習過程。人類會觀察機器的行為並給出反饋。比如,在對話視窗中,如果大型語言模型生成了一個回答,人類會評估這個回答是否恰當、是否有幫助,並根據這些評估給予好與不好的評價。 結合這兩者,你就得到了RLHF。機器不僅僅是根據固定的規則學習,它也通過人類的指導來理解更複雜、更細微的部分。這使得機器能夠在很多不同的任務上表現得更好,更貼近人類的期望和行為方式。

#Generative AI for everyone

  #Generative AI for everyone https://github.com/Ryota-Kawamura/Generative-AI-for-Everyone/blob/main/Week-1/Week-1_Quiz-1.md?fbclid=IwY2xjawGPws9leHRuA2FlbQIxMQABHdrz5REiR7cycmAGa1VDSl5c_r0_m760f0An7R788mnKQ48twF5t7PvGNg_aem_Qgwcp6FY_ZS09ZbEG5sr9g

大型語言模型 (LLM)

 LLM 1. 事先受過 大量專業訓練 (PB) 2.有目的性的微調 (ex:問ChatGPT 自己的問題, 他可以客製化產生回答) https://www.youtube.com/watch?app=desktop&v=ERr6J1bDXUI&ab_channel=%E4%BB%8A%E5%A4%A9%E6%AF%94%E6%98%A8%E5%A4%A9%E5%8E%B2%E5%AE%B3 ======== 大型語言模型 (LLM) 是一種人工智慧 (AI) 程式,可以辨識和產生文字以及完成其他任務。LLM 接受大量資料的訓練——因此得名「大型」。 LLM 建立在機器學習的基礎上:具體來說,是一種稱為 Transformer 模型的神經網路。 LLM 可以接受訓練來完成許多任務。最知名的用途之一是作為生成式 AI:當給出提示或提出問題時,它們可以產生文字回應。 LLM 範例包括 ChatGPT(來自 OpenAI)、Bard (Google)、Llama (Meta) 和 Bing Chat (Microsoft)。GitHub 的 Copilot 是另一個範例,但用於編碼而不是自然的人類語言。 LLM 有哪些優點: LLM 的一個關鍵特徵是它們能夠回應不可預測的查詢。傳統的電腦程式以其可接受的語法接收命令,或從使用者的一組特定輸入接收命令。 LLM限制 然而,就它們提供的資訊而言,LLM 的可靠性取決於它們所攝入的資料。如果饋入虛假資訊,它們將在回應使用者查詢時提供虛假資訊。LLM 有時也會「產生幻覺」:當它們無法給出準確答案時,它們會創造虛假資訊。 LLM 還可以透過惡意輸入進行操縱,以提供某些類型的回應(包括危險或不道德的回應)。 LLM 如何運作?  1.機器學習和深度學習 -在基礎層面上,LLM 是建立在機器學習的基礎上的。機器學習是人工智慧的一部分,它是指向程式提供大量資料以訓練程式在無需人工幹預的情況下識別資料特徵的做法。 -LLM 使用一種稱為深度學習的機器學習。深度學習模型基本上可以在無需人工干預的情況下訓練自己識別差異,不過通常需要進行一些人工微調。 2.神經網路 為了實現這種類型的深度學習,LLM 建立在神經網路的基礎上。正如人腦是由相互連接並向彼此傳送訊號的神經元構成的一樣, 人工神經網路(通常簡稱為「神經...

AI Adversarial attack 是人為的惡意攻擊,讓系統誤認目標

  Adversarial attack 是一種在機器學習和AI中使用的技術,是人為的惡意攻擊,讓系統誤認目標,混淆視聽,或是將特定的A判別為B,目的都是要讓系統的判斷產生錯誤,尤其是神經網絡 。 對抗性攻擊的目標是創建看似正常的輸入,但當模型處理時,會導致不正確或意外的結果,就像上面那個例子。 那如果是用神經網路(Nerual Network)來觀察呢?目前為止有很多network都能辨別圖片,舉個例子,我們使用基本的CNN(Convolutional Neural Network)來辨別圖片,假設這個CNN本身辨別圖片的能力就很好,基本上絕大部分的圖片都能正確辨別,因此照理來說它應該也能正確辨別出來兩張圖片都是「狗」。 然而,當你滿懷信心將圖片丟入network並等待結果時,最後結果告訴你:左邊是「狗」,而右邊是「郵輪」! 為什麼會是這個結果?大部分的人第一反應都是認為是network的辨別能力沒有訓練完整造成不準確的分類,而有少部分的人認為是圖片出問題。 那其實真正的原因就是圖片出了問題,可是明明用眼睛看兩張圖片都是一樣的,然而為什麼network還是不能正確辨別呢?其實這就是對抗性攻擊(Adversarial attack)的其中一個例子:它能在圖片加入人眼觀察不到的雜訊(perturbations),而這個雜訊卻又能讓network辨別錯誤,導致辨別出來的結果與正確答案不一樣。 https://medium.com/@Jimmy_9566/paper%E7%AD%86%E8%A8%981-adversarial-attack-17fdfd7d34fa