一文實測Gemini 2.5 Pro:視頻驅動的代碼生成,打造交互式開發應用新范式
根據谷歌官方的描述,在代碼能力、多模態能力方面顯著增強,特別是交互式 Web 應用程序,也就是說,現在你可以用這個模型去做各種動態網頁,甚至可以直接復刻。
優勢主要體現在前端和 UI 開發、基本編碼任務以及創建Agent工作流。
本次測評主要聚焦于編程、推理能力以及多模態理解能力方面。
一、編程能力
非常善于處理代碼疑難問題。
首先在前端Web開發方面表現優秀,并且已經支持cursor的代碼編程。
Gemini 2.5 Pro 模型目前在 WebDev Arena 排行榜上領先。
說一說這個排行榜是干嘛的。
它主要是用來衡量人類對模型構建優美的 Web 應用程序能力的評分。
第二,Gemini 2.5 Pro 在前端開發中能夠獨立開發出新功能,并且與整體風格保持一致。
傳統開發情況下,在沒有使用 Gemini 2.5 Pro 時,開發者實現新功能需要手動進行一系列繁瑣的操作。
你還要深入研究設計文件,理解設計意圖。
還要檢查組件的樣式屬性,比如顏色、字體、填充、邊距和邊框等。
最后要手動編寫 CSS 代碼,以確保開發的頁面或組件能夠準確地復制設計文件中的視覺效果。
這樣,一整天就過去了。
使用 Gemini 2.5 Pro 可以大大簡化這個過程。
開發者可以在集成開發環境(IDE)中利用 Gemini 2.5 Pro 的功能,讓模型自動生成新功能所需的代碼。
例如,官方給的一個示例中,如果需要添加一個與其他應用程序風格一致的視頻播放器,開發者只需通過 Gemini 2.5 Pro 的工具,而無需手動編寫大量代碼來匹配樣式屬性。
并且,Gemini 2.5 Pro 能夠幫助開發者快速將想法(概念)轉化為實際可用的 Web 應用程序。
使用鏈接:??https://gemini.google.com/app??
提示詞:還原設計稿。
原圖是canvas可畫國際版的首頁圖。
最終呈現出這樣的UI。
通常,從想法到實際應用需要經過設計、開發、測試等多個復雜步驟,而 Gemini 2.5 Pro 提供了一種更高效的方式,減少了中間環節的工作量。
如果是設計初期的草圖,它會不會也幫我還原出設計稿?
我找了一個APP的UI設計草稿圖,有點模糊不清,考驗模型的多模態理解能力。
最終為我生成了其中三個的示例:
二、推理能力
用于解決復雜問題和數學問題,非常實用。
解釋單詞:fomo
假設你自己是 Z 世代的一員,要向祖父母解釋這一概念。
請詳細描述這個詞的含義、起源,以及實際應用場景。語言簡潔,同時語氣輕松。
完整的內容如下:
好嘞,爺爺奶奶!今天我來給你們解釋一個我們年輕人(嗯,就是我這樣的Z世代)嘴邊常掛著的一個詞兒:FOMO。
你們聽著哈,FOMO 呢,其實是幾個英文單詞的縮寫,F-O-M-O,就是 "Fear Of Missing Out"。
這是啥意思呢?
翻譯過來呀,就是“害怕錯過”或者“擔心掉隊”的焦慮感。就是那種感覺,好像別人都在經歷一些特別棒、特別有趣的事情,而你呢,卻不在場,或者不知道,心里就有點癢癢的,甚至有點小焦慮,生怕自己錯過了什么精彩瞬間或者重要消息。
打個比方,就像以前你們年輕的時候,可能鄰居家買了最新的黑白電視機,大家都跑去看,要是你沒去成,心里是不是也會有點小失落,怕錯過大家討論的內容?FOMO 就有點像那個感覺,但是現在因為手機和網絡,這種感覺被放大了好多倍!
它是怎么來的呢?
這個詞兒呢,其實也不是特別新,但因為現在手機和社交媒體(就是我們天天刷的朋友圈、微博、抖音這些)太發達了,所以大家就把它掛在嘴邊了。你想啊,以前可能就是聽鄰居說哪兒開了個新鋪子,沒去有點遺憾。現在呢,我們隨時隨地都能在朋友圈、微博上看到朋友們在聚會、在旅游、在吃好吃的,信息一下子就涌過來了。
看到別人發出來的照片和視頻,哇,那個地方看起來好好玩!哇,那個活動看起來好熱鬧!哇,他們吃的那個東西看起來好好吃!如果自己沒參與,就很容易產生“哎呀,我是不是錯過了什么好玩的?”“我是不是out了?”這樣的想法。這種感覺,就是FOMO在作祟。
實際生活里怎么用呢?
這種場景可太多了!
社交活動:比如啊,周末我本來想在家歇著,結果刷朋友圈看到同學們都去一個新開的網紅店打卡了,照片看起來特別好玩。這時候,我可能就會突然不想歇了,也想去湊個熱鬧,這就是FOMO在作祟。生怕自己不去,下次大家聊天都插不上嘴。
熱門話題/潮流:或者看到大家都在討論一個新出的電影、一首新歌,或者玩一個新的游戲,你完全不知道是啥,就可能會覺得有點“out”了(就是落伍的意思),想要趕緊去了解一下,這也是一種FOMO。怕自己跟不上潮流,和朋友沒共同語言。
信息焦慮:還有就是,有些人會不停地刷手機,看社交媒體,生怕錯過任何一條朋友的動態、任何一個熱點新聞。幾分鐘不看手機就覺得不舒服,這也是FOMO的一種表現。
做決定的時候:有時候,它甚至會影響我們的決定。比如有好幾個朋友約你,時間有點沖突,你哪個都舍不得推掉,因為怕錯過任何一個聚會的精彩內容,結果把自己搞得特別累。
總結一下:
FOMO 就是一種因為害怕錯過別人正在經歷的有趣或重要的事情而產生的焦慮感,特別是在社交媒體時代,這種感覺更容易出現。它會讓我們想要不斷地查看信息,參與各種活動,有時候甚至會讓我們感到壓力。
當然啦,這種“害怕錯過”有時候也能激勵我們去嘗試新事物,認識新朋友,也不是完全不好。但如果太嚴重,總是擔心自己錯過了什么,就會活得很累。所以我們年輕人也常常互相提醒,要活在當下,別太FOMO啦!
爺爺奶奶,這下你們明白FOMO是啥意思了嗎?是不是還挺形象的?
Gemini 2.5 Pro 對代碼的深刻理解,結合強大的推理能力,使得模型能力超越claude3.7。
測試:讓它幫我診斷一段代碼的錯誤。
用戶輸入的代碼片段,這段代碼其實存在多個問題,比如說異常處理不完善、數據完整性缺失和可讀性差等問題。例如,未處理文件讀取權限,未記錄問題數據,數據丟失風險高,且缺少日志功能,不利于調試。同時,文件路徑硬編碼,靈活性不足。
我有一段代碼需要你進行審查和改進。請仔細檢查代碼中的問題,并提出改進建議。你可以直接輸出改進后的代碼,或者列出需要修改的地方和原因。
可以完整看到他的思維鏈。
在模型昨晚做完代碼審查之后,會及時給出改進方面,應該怎么解決。
最終給出了修復之后的代碼:
import json
import logging
from typing import List, Dict, Any, Optional
# 配置日志記錄器
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 定義常量
KEY_NAME = "name"
KEY_AGE = "age"
MIN_AGE = 18
class DataProcessingError(Exception):
"""自定義異常,用于處理數據處理過程中的特定錯誤。"""
pass
def read_data_from_file(file_path: str) -> Optional[List[Dict[str, Any]]]:
"""
從 JSON 文件中讀取數據。
Args:
file_path: 輸入 JSON 文件的路徑。
Returns:
包含數據的列表,如果文件未找到或 JSON 無效則返回 None。
"""
try:
with open(file_path, "r", encoding="utf-8") as file: # 明確指定 encoding
data = json.load(file)
if not isinstance(data, list):
logging.error(f"文件 {file_path} 中的頂層 JSON 結構不是列表。")
return None
return data
except FileNotFoundError:
logging.error(f"錯誤:輸入文件未找到: {file_path}")
return None
except json.JSONDecodeError:
logging.error(f"錯誤:輸入文件中的 JSON 格式無效: {file_path}")
return None
except Exception as e: # 捕獲其他潛在的讀取錯誤
logging.error(f"讀取文件 {file_path} 時發生意外錯誤: {e}")
return None
def process_data(data: Optional[List[Dict[str, Any]]]) -> List[Dict[str, Any]]:
"""
處理數據,篩選年齡不小于 MIN_AGE 的條目。
Args:
data: 從 JSON 文件讀取的數據列表。
Returns:
處理后的數據列表。
"""
if data is None:
return []
results: List[Dict[str, Any]] = []
for index, item in enumerate(data):
if not isinstance(item, dict):
logging.warning(f"條目 {index} 不是一個字典,已跳過:{item}")
continue
try:
name = item[KEY_NAME]
age_raw = item[KEY_AGE]
if not isinstance(age_raw, (int, float)): # 確保 age 是數字類型
raise ValueError(f"條目 {index} 的年齡不是有效的數字類型: '{age_raw}'")
age = int(age_raw) # 轉換為整數以進行比較
if age < MIN_AGE:
logging.info(f"條目 {index} ('{name}') 由于年齡 ({age}) 小于 {MIN_AGE} 而被跳過。")
# 這里不拋出異常,而是簡單地跳過不符合條件的條目
else:
results.append({KEY_NAME: name, KEY_AGE: age})
except KeyError as e:
logging.warning(f"條目 {index} 中缺少鍵: {e}。條目內容: {item}")
except ValueError as e: # 捕獲由 age 類型轉換或自定義檢查引發的 ValueError
logging.warning(f"條目 {index} 處理時發生值錯誤: {e}。條目內容: {item}")
except Exception as e: # 捕獲其他潛在錯誤
logging.error(f"處理條目 {index} ({item}) 時發生意外錯誤: {e}")
return results
def save_results_to_file(results: List[Dict[str, Any]], file_path: str) -> bool:
"""
將處理結果保存到 JSON 文件。
Args:
results: 要保存的處理后的數據。
file_path: 輸出 JSON 文件的路徑。
Returns:
如果保存成功則返回 True,否則返回 False。
"""
try:
with open(file_path, "w", encoding="utf-8") as file: # 明確指定 encoding
json.dump(results, file, indent=4, ensure_ascii=False) # ensure_ascii=False 以支持非 ASCII 字符
logging.info(f"處理完成。結果已保存到 {file_path}")
return True
except IOError as e:
logging.error(f"無法將結果寫入文件 {file_path}: {e}")
return False
except Exception as e: # 捕獲其他潛在的寫入錯誤
logging.error(f"保存結果到 {file_path} 時發生意外錯誤: {e}")
return False
def main(input_file: str = "input.json", output_file: str = "output.json") -> None:
"""
主函數,協調數據的讀取、處理和保存。
Args:
input_file: 輸入 JSON 文件的名稱。
output_file: 輸出 JSON 文件的名稱。
"""
logging.info(f"開始處理文件: {input_file}")
data = read_data_from_file(input_file)
if data is not None:
processed_data = process_data(data)
if processed_data: # 僅當有有效數據處理后才保存
save_results_to_file(processed_data, output_file)
elif not data: # 輸入數據為空
logging.info("輸入數據為空,無需處理。")
save_results_to_file([], output_file) # 創建一個空的輸出文件或按需處理
else: # 所有數據都被過濾掉了
logging.info("沒有數據符合處理條件。")
save_results_to_file([], output_file) # 創建一個空的輸出文件或按需處理
else:
logging.warning("由于讀取錯誤,無法進行數據處理。")
if __name__ == "__main__":
# 你可以在這里通過命令行參數等方式更改文件名
# 例如:
# import argparse
# parser = argparse.ArgumentParser(descriptinotallow="Process JSON data.")
# parser.add_argument("-i", "--input", default="input.json", help="Input JSON file")
# parser.add_argument("-o", "--output", default="output.json", help="Output JSON file")
# args = parser.parse_args()
# main(input_file=args.input, output_file=args.output)
main()
三、多模態能力
利用長上下文分析大型數據集、代碼庫或者文檔。
Gemini 2.5 Pro 模型提供最先進的視頻理解,與編碼能力相結合,可以實現以前版本無法實現的新流程。
目前這個網址不支持視頻上傳,改用Google ai studio。
到這里,我大概錄制了十秒左右的操作扣子空間的視頻。
經過我的實測,需要將視頻上傳到YouTube,然后將鏈接傳到Google AI studio,處理的速度會快一點。
step1:主要還是圖標這塊沒有處理好。
它可以設計大概的網頁框架。
step2:使用@orange橘子 老師的提示詞:
視頻理解,目前Gemini 2.5 Pro 模型表現的不是很好,
不過在業內屬于首創,全新的多模態+代碼編程能力
未來或許或許會有即時的代碼編程,左邊是你的演示區,右邊就是AI為你創作的區域;
這就是2025年的多模態范式編碼。
真正的人與AI協作的時代即將到來了,家人們。
本文轉載自??AIGC新知??,作者:絳燁
