利用AI輔助工具Userdoc定義軟件需求
Userdoc是一個AI輔助服務,可以幫助創建軟件需求文檔。在最近舉行的AI工程師峰會上,筆者與Userdoc的創始人Chris Rickard進行了交流。
譯自 AI for Dev Tools: Create Software Requirements with Userdoc 。
AI編碼工具現已成為軟件開發的標準配置,但生成式AI的應用也在向開發流程的其他方面擴散。Userdoc是一個初創公司,他們開發了一個AI輔助服務,用于定義軟件需求。在上周于舊金山舉行的AI工程師峰會上,筆者與Userdoc的聯合創始人兼首席開發者Chris Rickard進行了交流,探討他創建Userdoc的初衷,以及它將如何幫助開發者。
在一個新項目中,確定軟件將要實現的功能以滿足一個或多個“用戶角色(personas)”的需求,通常是第一步。
“構建優秀軟件的關鍵之一,是定義準確的需求,以確保開發的方向正確。”Rickard表示,“我很感興趣AI如何促進這個過程,幫助發現可能導致漏洞的問題所在;更糟的是,發現巨大的系統功能其實并未解決原始問題,或者根本就不需要。”
Userdoc
Userdoc允許用戶先輸入業務相關的背景信息,作為AI理解需求的上下文。Rickard向我演示了一個例子,一個雜貨配送企業使用Userdoc為配送員定義需求。在這樣的場景下,AI可以對開發者構建系統提供一定的“監督”作用。
“在這個例子里,人工智能就像一個業務分析師,”Rickard說,“它理解相關變更的其他影響。”
直接用ChatGPT定義需求有何不同?
這一切聽起來不錯,但是相比直接使用ChatGPT,Userdoc的AI生成軟件需求有什么不同呢?
Rickard回答說,ChatGPT存在“編造信息”的風險。他補充說,Userdoc使用GPT-4作為底層技術,但是業務背景才是關鍵。
“所以,當我們與GPT-4交互時,”他說,“我們提供系統的所有其他相關信息作為上下文。”
他承認,ChatGPT也可以實現類似的功能,但需要構建一個“巨大的提示”,才能得到與Userdoc類似的響應。
每個Userdoc項目通常包含一系列“用戶故事”,這些故事對應軟件中的各項功能。如果一個系統有成百上千的功能,事情就會變得非常復雜,這正是Userdoc試圖解決的痛點之一。
“我們這里試圖解決的一個大問題是,”Rickard說,“當一個系統擁有繁雜的功能時,[開發人員]需要考慮和記憶很多細節;軟件成本和進度超支的一個重要原因,是人們在前期沒有把這些小細節想清楚。”
Userdoc的使用
創建一個新的Userdoc項目,需要通過向導輸入用戶信息和各種需求目標。這個設置工作通常由產品負責人、產品經理和業務分析師完成,之后項目移交給開發團隊。但Rickard表示,Userdoc也可以直接幫助開發者。
“一旦特征和需求確定后,[...]可以和項目管理工具集成。它可以連接到Jira、Azure DevOps等,與工作項的待辦、進行中、已完成狀態保持同步,這樣就能隨時查看每個功能的詳細信息。”
Userdoc 向導
Rickard指出,在某些情況下,開發人員也參與需求的確定。所以開發者如何使用Userdoc,需要根據具體業務需求來決定。在返回項目后,它也是一個很好的參考。
“我們與許多有大量并行項目的機構合作,”他說,“開發人員和設計師在項目后期返回時,就可以通過Userdoc快速了解當前需實現的功能。”
Rickard還說,Userdoc中的信息也可以成為系統的“活文檔”。
“如果一開始就用相當詳細的需求,并持續更新,作為業務可以參考的唯一版本,那么它就成為了[軟件系統]的準確信息來源。”
考慮 LangChain
既然我們在AI工程師峰會上交流,我想了解Rickard是否有使用AI工程界當前熱門的工具。由于Userdoc使用GPT-4,我問他是否將LangChain作為與OpenAI模型通信的中間層?
“我在Userdoc第一個原型中確實用了LangChain幾周,”他說,“但后來想更清楚背后運行的細節,這對我理解其中的區別很有幫助。LangChain無疑很強大,但是它的優勢在于提供了處理某些任務的便捷方法,如將文檔分塊,將其發送給LLM,并提出問題。我同時學習LLM和LangChain時,很難區分兩者的邊界。所以我自己編寫了一套與GPT-4交互的組件。”
Userdoc的擴展
如果Userdoc隨時間沉淀可以成為軟件文檔的源頭,那么它是否也可以用來為客戶提供幫助聊天機器人(例如,為那個雜貨配送服務)?
“答案是肯定的,”Rickard說,“主要考量是內部知識和外部公開的區分,以及人們的信息安全意愿。”
他指出,Userdoc目前是自舉的,如果擴充團隊,他更希望從事軟件合規方面的工作。所以他情愿朝這個方向發展,而不是重復做網站和App的客戶聊天機器人。
“我非常認同這個理念,確保軟件開發真正實現業務最初同意的需求,”他解釋說,“開發者現在可以使用各種自動化測試,我希望AI可以增強這個驗證過程。”