我之前的文章分享了如何用ChatGPT、Claude、Replit、Windsurf、Lovable、Bolt等AI工具製作天文教育apps,這篇文章則接續分享如何藉由程式編輯器Cursor的AI助手,打造一個能用Python取得NASA提供的系外行星資料、並串接GPT-5 AI模型來生成行星故事的網頁應用程式。歡迎追蹤《與AI探索天文》FB粉絲專頁,並訂閱《與AI探索天文》Substack電子報。我會分享如何運用各種AI工具,來探究你我好奇的天文主題、將它連結到生活及其他學科領域,並結合相關開放資料,打造有趣的天文應用程式與遊戲。我希望藉由這些分享,讓每個人都可以與AI創造出專屬自己的天文探索故事,拉近我們與星空的距離。
你閱讀著《資料視覺化:用Python為星空作畫》的7.1節,看到一個AI角色,i蟒,教你如何從NASA的系外行星資料庫網站中,查看有哪些已被證實位於太陽系外的行星。這讓你想起去年參加「2024 K-12天文教育論壇」時,聽到的一場演講「AI時代的天文教育」。講者在最後展示了一個名為「系外行星故事產生器」的網頁,能讓AI以NASA公開的系外行星資訊為素材,生成探險故事。你好奇著,自己是否也可以藉由AI工具的協助,打造出類似的應用程式呢?
在之前的章節中,i蟒曾介紹Astroquery這個能取得天文資料的Python套件,你覺得這應該可以作為第一塊磚。於是你闔上書,打開ChatGPT切換到深度學習功能,輸入:「我想用Astroquery套件從NASA系外行星資料庫取得目前已確認的系外行星清單,其中要包含行星名稱、母恆星名稱、發現方法、發現年份、距離、軌道週期、行星半徑、行星質量、行星溫度和密度等欄位。請你查閱最新文件,瞭解所需資料表與欄位名稱,以及Astroquery的最新語法,並依照這些資訊撰寫一篇適合初學者跟著做就能完成上述需求的教學指南。」
等待的過程,你一邊吃著恰恰煎蘿蔔糕,一邊複習那篇讓你認識ChatGPT深入研究功能的文章:「如何用ChatGPT的深入研究功能,設計出結合恆星演化知識、編劇創作及AI應用的自主學習計畫?」。完食後,ChatGPT剛好通知已完成教學指南。
你還記得那位講者提到,他是透過串接OpenAI的GPT大型語言模型來生成行星故事。為了取得建造應用程式的第二塊磚,你接續用深入研究功能:「我想透過GPT-5大語言模型,讓AI根據這些行星的欄位資料產生關於它們的有趣故事,也就是我輸入某個行星名,AI會產生所屬故事。可以用Python做到嗎?我需要進行什麼準備工作?請查詢OpenAI官方文件研究相關資訊,並撰寫一篇適合初學者跟著做就能完成上述需求的教學指南。」
你按照這份教學指南,註冊好OpenAI帳號並取得API金鑰以備後續使用。接著,你思考下一步:需要有個能把這兩塊磚當基礎、並依照我的指揮建造出應用程式的AI工具。
你忘了在哪裡看到,好像有個叫Cursor的程式開發AI工具很厲害,但翻遍《與AI探索天文》FB粉絲專頁中的文章,ChatGPT、Claude、Replit、Windsurf、Lovable、Bolt…就是沒看到介紹Cursor的文章。
於是,你向筆電視窗中的我求助。
我回答:「Cursor跟Windsurf一樣,是能下載到你的電腦中安裝的程式編輯器。透過內建的AI代理人(agent),你可以指揮它擬定開發計畫,並讓它依照計畫一步步完成程式撰寫,若有不滿意的地方也能指示它修改。我已幫你下載安裝好Cursor,同時建立了專案資料夾『exoplanet_story_generator』,並將你剛剛在ChatGPT產生的兩份教學指南PDF檔下載至該資料夾。我已用Cursor開啟了這個資料夾,現在畫面右側顯示的是它的AI代理人對話框,下方有個下拉選單可以讓你切換AI模型,我先幫你選了『gpt-5-high』。你可以開始指揮它了。」
你思考著該如何指揮AI代理人。忽然,你想起那位講者也曾多次在Python年會分享天文相關的主題,而且其中有一次是關於網頁製作的Python套件,講題好像是…「搭上Streamlit特快車遊沐星光程式」。
於是,你決定了第三塊磚,開始輸入指令:「請根據以下需求產生一個markdown檔案說明開發規劃並列出工項待辦清單,先不要直接撰寫程式。
請把資料夾中的兩個pdf檔當作你的知識庫,並連網搜尋Streamlit最新官方文件。
開發需求描述:請用Streamlit製作一個名為『系外行星故事產生器』的網頁應用程式。當使用者第一次載入頁面時,會透過Astroquery套件從NASA的系外行星資料庫中取得『Planetary Systems Composite Parameters』資料表,並實作快取機制,以避免每次刷新頁面都需重新載入資料。網頁左側要提供一個下拉選單,讓使用者可以選擇特定的行星名稱;右側則由AI模型gpt-5-mini根據該行星的基本資料,自動生成一段關於這顆行星的有趣故事。使用者可以編輯這段故事內容,並將其下載為.txt檔案。整體介面語言為台灣繁體中文,並需在頁面上加入一段資訊欄,說明資料來源來自NASA系外行星資料庫。」
送出指令後,你開始看到AI代理人自言自語的思考過程,以及最後它產生的開發規劃檔案。
你瀏覽一下計畫,確認後繼續指示它:「請開始根據這個計畫一一執行待辦工項,完成一項就打勾。」
你看到它依序執行一個又一個步驟,程式碼檔案也一個接一個地產生。當執行到最後一步時,AI代理人等待你在名為「.env」的環境變數檔案中,填入你先前取得的OpenAI API金鑰。填好後,它便執行指令「streamlit run app.py」,啟動這個網頁應用程式。
「咦?」跳出的網頁上卻顯示一串你看不懂的錯誤訊息。你向AI代理人求助後才知道,問題出在程式使用了過時的語法,你隨即請它修正。經過這個反覆回饋與修正的過程後,「系外行星故事產生器」的網頁終於順利呈現在瀏覽器中。
你操作了一下,覺得不是很滿意,於是指示AI代理人改進:「請針對以下需求修改:
改變頁面呈現的風格,透過排版、色彩樣式及文字描述,讓使用者像是操作蒸氣龐克風格的機器來產生故事
頁面載入時不要直接產生故事,而是使用者按了按鈕後才產生
目前產生的故事很無趣,像是單純寫出星球的資訊,請改用第三人稱視角的方式,描述角色遊歷該星球的故事,在科奇幻的風格下自然融合科學事實。
請連網搜尋最新官方文件,研究如何透過參數設定調低GPT-5模型的思考程度,避免讓模型思考太久
請在網頁底部加上版權宣言:©2025 本網頁由蘇羿豪藉由Cursor協助開發,作為『與AI探索天文』天文教育產品開發計畫的一部分。其中“蘇羿豪”和“與AI探索天文“要分別連結到https://astrobackhacker.tw和https://www.facebook.com/astroeduai這兩個網頁。」
最後,在優化過的網頁中,你按下「啟動故事引擎」按鈕,生成關於系外行星Kepler-10 b的奇幻冒險故事。而你也將在《資料視覺化:用Python為星空作畫》的7.3節裡,與AI用Python探索這個行星的觀測資料,分析出它的軌道週期。
此篇文是由蘇羿豪經ChatGPT及Cursor協助創作,文章以「創用CC姓名標示─非商業性 4.0(CC BY-NC 4.0) 國際版授權條款」釋出。歡迎分享並追蹤「與AI探索天文」FB粉絲專頁或我的Threads。也邀請你訂閱《與AI探索天文》電子報。