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