精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GPT-4o:實現跨越文本與視覺的智能交互

原創 精選
人工智能
本文通過具體的應用實例和對比測試,展示了GPT-4o在問答系統和圖像理解方面的實際應用,并提供了詳細的集成方法和代碼實現。無論是個人用戶還是企業開發者,都能通過GPT-4o體驗到更智能、更自然的人機交互。

想了解更多AIGC的內容,請訪問:

51CTO AI.x社區

http://www.jxzklqfsx.com/aigc/

摘要

OpenAI最新發布的GPT-4o模型及其在多模態處理上的卓越能力,標志著人機交互邁向新的高度。GPT-4o能夠處理文本、音頻、圖片和視頻,響應速度極快,且在多語言處理上表現優異。本文通過具體的應用實例和對比測試,展示了GPT-4o在問答系統和圖像理解方面的實際應用,并提供了詳細的集成方法和代碼實現。無論是個人用戶還是企業開發者,都能通過GPT-4o體驗到更智能、更自然的人機交互。

GPT-4的發布及其特性

OpenAI 最近發布了GPT-4o(“o”代表“omni”,中文中可以讀作“歐姆尼”),這標志著人機交互朝著更自然的方向邁出了一大步。GPT-4o能夠接受任意組合的文本、音頻、圖片和視頻輸入,并生成任意組合的文本、音頻和圖片輸出。它能夠在232毫秒內對音頻輸入做出反應,平均響應時間為320毫秒,這與人類對話中的反應時間相似。在文本和代碼處理方面,GPT-4o的性能與GPT-4 Turbo相當,并且在處理非英語語言文本時有顯著提升,同時速度更快,API調用成本降低了50%。

相比之前的模型,GPT-4o在視覺和音頻理解方面表現尤為出色。在GPT-4o之前,使用語音模式與ChatGPT對話的延遲分別為2.8秒(GPT-3.5)和5.4秒(GPT-4),這個過程涉及三個獨立的模型:一個簡單的模型將音頻轉錄為文本,GPT-3.5或GPT-4處理文本并生成響應,最后一個模型將文本轉換回音頻。這種模式導致主要的智能源——GPT-4無法直接觀察語調、多名講話者或背景噪音,也無法輸出笑聲、歌聲或情感表達。GPT-4o通過端到端訓練一個新模型,統一處理文本、視覺和音頻輸入輸出。這是我們首次將所有這些模態結合在一個模型中,因此我們仍在探索其能力和局限性。

可以通過這個例子來感受GPT-4o給我們帶來了什么。假設你在外國旅游,遇到了一家當地餐館。你拿起手機拍下菜單的照片,過去的模型可能需要幾秒鐘來處理這張圖片,然后再翻譯成中文,過程中可能會有延遲和信息丟失。而現在有了GPT-4o,你拍下照片后,模型能夠立即識別圖片內容,快速翻譯菜單,并告訴你每道菜的歷史和推薦。更重要的是,GPT-4o響應速度更快,能夠在幾百毫秒內做出反應。同時,它還能感知周圍的環境和背景噪音,理解你的情感和語調,甚至能夠回應你的情緒,比如通過語音識別你的疑問或驚喜,提供更貼心的建議。

GPT-4o的發布不僅展示了OpenAI在技術上的突破,也預示著人機交互的新時代。通過這篇文章,我們將探討如何將GPT-4o集成到實際應用中,實現問答和圖像理解功能。

如何將GPT-4集成到應用中

GPT-4o的發布不僅展示了其在多模態處理上的強大能力,也為開發者提供了全新的API接口,使得集成GPT-4o變得更加簡便和高效。通過調用OpenAI提供的API,開發者可以輕松地將GPT-4o的強大功能融入到自己的應用中,無論是實現快速響應的問答系統,還是增強的圖像理解功能,GPT-4o都能提供卓越的性能。

GPT-4o最初將在ChatGPT和API中作為文本和視覺模型提供。具體來說,GPT-4o將在ChatGPT Free、Plus和Team(即將推出Enterprise)以及Chat Completions API、Assistants API和Batch API中提供。這意味著不僅普通用戶(ToC)可以通過ChatGPT體驗到GPT-4o的強大功能,企業用戶(ToB)也可以通過API訪問新模型,將其集成到各自的業務應用中,滿足不同場景的需求。

對于IT從業者來說,看到GPT-4o在文本和視覺上的強大功能,是否已經躍躍欲試了呢?接下來,我們將詳細介紹如何通過API調用實現GPT-4o的集成,并通過具體的示例代碼,展示如何將其問答功能和圖像理解能力整合到實際應用中。

既然要測試GPT-4o在文本和視覺方面的能力,我們需要嘗試調用新模型進行提問。例如,可以提出一個復雜的數學題目,看看GPT-4o能否準確地解答。這樣的測試不僅可以檢驗GPT-4o在數學推理和計算上的能力,也能展示其處理復雜文本問題的性能。

不僅如此,我們還應該引入其他幾個模型進行對比測試,例如百度千帆的Llama2-Chinese-7b版本、Qwen-Plus以及GPT-3.5-Turbo。通過對比這些模型在相同任務上的表現,這種對比測試可以幫助我們確定GPT-4o在實際應用中的可靠性和有效性。

另外,為了全面評估GPT-4o的視覺理解能力,我們還可以通過輸入一張風景圖片和一張數學公式圖片來測試其圖像識別和理解的能力。通過這種方式,我們能夠直觀地看到GPT-4o在處理視覺信息上的表現,驗證其在多模態處理上的卓越性能。

通過這些步驟,我們將能夠測試GPT-4o在文本和視覺處理上的強大能力,接下來,將詳細介紹具體的測試方法和代碼實現。

問答功能的實現

前面已經說明了,需要測試GPT-4o模型在問答方面與其他模型的異同,同時還要測試其在視覺方面的能力。基于如上的思路,我們需要梳理執行步驟。首先,創建一個 selected_model.py 文件,用來存放訪問不同大模型的函數。為了簡化代碼并統一調用這些大模型,我們使用LangChain框架。LangChain框架能夠幫助我們方便地切換和管理不同模型的調用邏輯,使代碼更加簡潔和易于維護。接著,創建 app.py 文件,利用Streamlit創建一個Web交互界面。在這個界面中,用戶可以通過選擇框選擇對應的大模型,然后在提供的窗口中輸入問題。當用戶提交問題請求時(點擊“發送”按鈕),app.py 文件將調用 selected_model.py 文件中寫好的大模型函數,對用戶的請求進行響應,并將響應內容返回到 app.py 文件中進行展示。

創建selected_model.py 文件,添加模型調用方法

這個文件包含所有訪問不同大模型的函數。每個函數對應一個大模型,并通過LangChain框架進行調用。這些函數負責接受用戶的問題并返回相應的答案。

先創建調用gpt-4o的函數,如下:

def get_response_from_gpt_4o(question:str):
    llm = ChatOpenAI(model="gpt-4o")
    template = """問題: {question}
    回答: 請一步一步思考,然后回答."""
    prompt = PromptTemplate(template=template, input_variables=["question"])
    llm_chain = LLMChain(prompt=prompt, llm=llm)
    response = llm_chain.run(question)         
    return response

代碼整體比較簡單,我們對其進行解釋如下:

(1) 定義函數get_response_from_gpt_4o

代碼,def get_response_from_gpt_4o(question:str):,定義了一個名為get_response_from_gpt_4o的函數,該函數接受一個字符串類型的參數question作為用戶的提問,并返回一個響應。

(2) 實例化ChatOpenAI

通過llm = ChatOpenAI(model="gpt-4o", base_url="https://api.chatanywhere.tech/v1")語句,實例化了一個ChatOpenAI對象,并將其賦值給變量llm(Large Language Model ,大語言模型)。通過初始化對象的model參數指定該對象使用了模型gpt-4o。

(3)定義模板字符串

template = """問題: {question}
回答: 請一步一步思考,然后回答."""

定義了一個模板字符串并將其賦值給變量template。該模板用于生成提示,其中包含占位符{question},表示將問題插入其中。

(4)創建PromptTemplate實例

prompt = PromptTemplate(template=template, input_variables=["question"])

創建了一個PromptTemplate對象,并將其賦值給變量prompt。該對象使用之前定義的template字符串,并指定question為輸入變量。

(5) 創建LLMChain實例

llm_chain = LLMChain(prompt=prompt, llm=llm)

創建了一個LLMChain對象,并將其賦值給變量llm_chain。該對象使用之前定義的prompt和llm。

(6) 運行LLMChain并獲取響應

response = llm_chain.run(question)
return response

調用llm_chain的run方法,傳入question參數,并將返回的響應賦值給變量response。同時,返回response變量的值,即函數get_response_from_gpt_4o的輸出。

該函數首先初始化一個ChatOpenAI對象以使用gpt-4o模型,然后定義一個包含問題和指示的模板字符串。接著,它創建一個PromptTemplate實例,并用它和ChatOpenAI對象創建一個LLMChain實例。最后,函數運行LLMChain實例,生成并返回一個基于輸入問題的響應。我們可以按照這個套路生成調用其他大模型的函數。

創建調用通義千問大模型的函數代碼,如下:

def get_response_from_qwen(question:str):
    #創建模版
    template = """問題: {question}
    回答: 請一步一步思考,然后回答."""
    #定義模版輸入變量
    prompt = PromptTemplate(template=template, input_variables=["question"])
    llm = Tongyi(model_name = "qwen-plus")
    llm_chain = LLMChain(prompt=prompt, llm=llm)
    response = llm_chain.run(question)
    return response

該函數使用了Tongyi類來實例化一個名為llm的大語言模型對象,模型名稱為qwen-plus。它與之前的get_response_from_gpt_4o函數相同的地方在于,它們都創建了一個模板字符串,定義了一個PromptTemplate對象,并使用一個LLMChain對象來生成響應。

接著是百度千帆平臺微調的Llama2-Chinese-7B 版本的模型調用函數,代碼如下:

def get_response_from_llama2(question:str):
    llm = QianfanLLMEndpoint(model="Qianfan-Chinese-Llama-2-7B")
    template = """問題: {question}
    回答: 請一步一步思考,然后回答."""
    prompt = PromptTemplate(template=template, input_variables=["question"])
    llm_chain = LLMChain(prompt=prompt, llm=llm)
    response = llm_chain.run(question)
    return response

該函數使用了QianfanLLMEndpoint類來實例化一個名為llm的大語言模型對象,模型名稱為Qianfan-Chinese-Llama-2-7B。其余部分與之前的get_response_from_gpt_4o函數相同,包括模板的定義、PromptTemplate和LLMChain的創建及運行。

最后,是調用gpt-3.5-turbo模型,代碼如下:

def get_response_from_gpt(question:str):
    llm = ChatOpenAI(model="gpt-3.5-turbo",base_url="https://api.chatanywhere.tech/v1")
    template = """問題: {question}
    回答: 請一步一步思考,然后回答."""
    prompt = PromptTemplate(template=template, input_variables=["question"])
    llm_chain = LLMChain(prompt=prompt, llm=llm)
    response = llm_chain.run(question)         
    return response

需要說明的是,由于調用了多個平臺的大模型,因此需要預先配置多平臺模型訪問的Key,可以通過創建.env 文件定義這些Key。可以在程序相同的目錄下創建.env 文件,文件內容如下:

OPENAI_API_KEY=sk-3M3Cg1uLVDS7nXXXkFSlNV0Ts1CamgSP
QIANFAN_AK=Y5DvSDyyAZKXXXHu719rP
QIANFAN_SK=CKsfjtXawcjsg1XXXU3VwpACgZdorI
DASHSCOPE_API_KEY=sk-f93952eXXX4b3b65f0906a1e0e7

`.env` 文件用于存儲應用程序的環境變量,包括訪問API的密鑰和其他配置參數。這些變量提供了應用程序在不同平臺和服務之間進行交互所需的認證信息和配置。文件中包含多個API密鑰和配置參數,用于不同的服務提供商:

  • OpenAI 密鑰 (`OPENAI_API_KEY`):用于訪問OpenAI提供的服務,例如GPT-4o模型。
  • 百度千帆密鑰 (`QIANFAN_AK` 和 `QIANFAN_SK`):用于驗證和訪問百度千帆平臺的服務。
  • 阿里靈積密鑰 (`DASHSCOPE_API_KEY`):用于驗證和訪問阿里靈積(Dashscope)平臺的服務。

創建 app.py 文件,添加Web交互功能

創建完基本的模型調用函數之后,再來看看Web 頁面的交互功能。創建app.py文件,使用Streamlit創建一個Web交互界面。用戶在界面中可以選擇要使用的大模型,并輸入他們的問題。當用戶點擊“發送”按鈕時,app.py 文件將根據用戶選擇的大模型,調用 selected_model.py 文件中的相應函數來處理問題。響應結果將顯示在界面上,供用戶查看和對比不同模型的表現。

下面來看看代碼的實現,如下:

# 定義模型列表
models = ["Qianfan-Chinese-Llama-2-7B", "gpt-3.5-turbo", "qwen-plus","gpt-4o"]
# 創建一個下拉框,用戶可以從中選擇一個模型
selected_model = st.selectbox("請選擇一個大模型:", models)
# 顯示所選模型
# st.write(f"你現在選擇了 {selected_model} 大模型")
st.markdown(f"你現在選擇了 <span style='color:red; font-weight:bold;'>{selected_model}</span> 大模型", unsafe_allow_html=True)
# 創建文本輸入框讓用戶輸入問題
user_question = st.text_input("請輸入你的問題:")
# 創建一個發送按鈕
if st.button("發送"):
    # 根據所選模型調用對應的函數
    if selected_model == "Qianfan-Chinese-Llama-2-7B":
        response = get_response_from_llama2(user_question)
    elif selected_model == "gpt-3.5-turbo":
        response = get_response_from_gpt(user_question)
    elif selected_model == "qwen-plus":
        response = get_response_from_qwen(user_question)
    elif selected_model == "gpt-4o":
        response = get_response_from_gpt_4o(user_question)
    else:
        response = "未知模型,請重新選擇。"
    # 確保LaTeX公式用雙美元符號包圍,并正確處理反斜杠
    response_with_latex = response.replace("\\(", "$$").replace("\\)", "$$")
    response_with_latex = response_with_latex.replace("\[", "$$").replace("\]", "$$")
    # 顯示返回的結果
    st.markdown(response_with_latex, unsafe_allow_html=True)

這些代碼內容與Web 交互息息相關,我們來逐一解釋如下:

(1) 定義模型列表和下拉框

models = ["Qianfan-Chinese-Llama-2-7B", "gpt-3.5-turbo", "qwen-plus", "gpt-4o"]
selected_model = st.selectbox("請選擇一個大模型:", models)

定義了一個包含模型名稱的列表,命名為models,其中包括四個模型:Qianfan-Chinese-Llama-2-7B,gpt-3.5-turbo,qwen-plus,和gpt-4o。在下拉框選擇的時候,會用到這個列表的信息。創建一個下拉框,用戶可以從中選擇一個模型。使用Streamlit的selectbox函數創建了一個下拉框,供用戶選擇模型。selectbox的第一個參數是提示文本,第二個參數是可供選擇的選項列表。用戶選擇的模型存儲在變量selected_model中。

(2) 顯示所選模型

st.markdown(f"你現在選擇了 <span style='color:red; font-weight:bold;'>{selected_model}</span> 大模型", unsafe_allow_html=True)

使用st.markdown函數顯示用戶所選的模型,并通過HTML標簽使所選模型的名稱以紅色和加粗的樣式顯示。unsafe_allow_html=True參數允許使用HTML標簽。

(3) 創建文本輸入框讓用戶輸入問題

user_question = st.text_input("請輸入你的問題:")

使用Streamlit的text_input函數創建了一個文本輸入框,提示用戶輸入問題。用戶輸入的問題存儲在變量user_question中。

(4) 創建“發送”按鈕,調用模型

if st.button("發送"):
if selected_model == "Qianfan-Chinese-Llama-2-7B":
    response = get_response_from_llama2(user_question)
elif selected_model == "gpt-3.5-turbo":
    response = get_response_from_gpt(user_question)
elif selected_model == "qwen-plus":
    response = get_response_from_qwen(user_question)
elif selected_model == "gpt-4o":
    response = get_response_from_gpt_4o(user_question)
else:
    response = "未知模型,請重新選擇。"

使用Streamlit的button函數創建了一個按鈕,按鈕標簽為“發送”。當用戶點擊按鈕時,執行后續邏輯:

  • 如果選擇了Qianfan-Chinese-Llama-2-7B,則調用get_response_from_llama2函數。
  • 如果選擇了gpt-3.5-turbo,則調用get_response_from_gpt函數。
  • 如果選擇了qwen-plus,則調用get_response_from_qwen函數。
  • 如果選擇了gpt-4o,則調用get_response_from_gpt_4o函數。
  • 如果選擇了未知模型,返回提示信息“未知模型,請重新選擇。”

(5) 處理輸出并展示響應結果

response_with_latex = response.replace("\\(", "$$").replace("\\)", "$$")
response_with_latex = response_with_latex.replace("\[", "$$").replace("\]", "$$")
st.markdown(response_with_latex, unsafe_allow_html=True)

由于每類模型返回的響應格式各不相同,為了確保顯示的效果需要確保LaTeX公式用雙美元符號包圍,并正確處理反斜杠。代碼中,將返回的響應中的LaTeX公式進行替換處理,將“\(”替換為“$$”,將“\)”替換為“$$”,同時將“\[”替換為“$$”,將“\]”替換為$$,進行了一些列處理。其目的是為了確保LaTeX公式在Markdown中能夠正確渲染。

最后,使用st.markdown函數顯示處理過的響應,并允許HTML標簽通過設置unsafe_allow_html=True。這樣可以確保返回的結果在界面上正確顯示,包括可能的LaTeX公式。

對比測試

完成代碼之后,進入命令行工具保證在app.py 同一級目錄下面,執行如下命令進行測試。

streamlit run app.py

看到如下圖所示,說明Streamlit 已經在 本機的8502 端口啟動了,此時會自動彈出瀏覽器并訪問對應的Web頁面地址。如果沒有自動訪問,可以手動在瀏覽器中輸入http://localhost:8502 進行訪問。

接下來,我們希望模型回答一個方程求解的問題:“求解下列方程組的所有實數解: 2x + 3y = 7 4x y = 1”。看看我們定義的4個模型的表現如何。

如下圖所示,在展示的界面中,選擇了“Qianfan-Chinese-Llama-2-7B”的模型,這個是百度千帆平臺對Llama2模型進行中文訓練集微調之后的模型,其參數是7B,也就是70億。然后輸入對應的問題,點擊“發送”按鈕,可以看到結果如下:

從顯示結果來看Llama2模型返回了一些解題的思路,并給出了一個解:(5,-1)。我們把該解帶入到第一個式子:2x+3y=7 發現沒有問題,但是帶入第二個式子:4x-y=1 發現明顯不對(有興趣大家可以自己算算哈)。

再來到第二個測試模型:“gpt-3.5-turbo”,如下圖所示,輸入同樣的問題并且點擊“發送”。

從結果上看x=-4, y=5 將其帶入到第一個式子結果是正確的,再將其帶入到第二個式子好像不太對了。

接著,看看“qwen-plus”文心一言模型的表現,如下圖所示,輸入問題,并且通過發送按鈕請求結果。

如下圖所示,結果是x=5/7 y=13/7。

我們可以將 x=5/7 y=13/7 都帶入到方程式 2x + 3y = 7 4x y = 1 進行演算,發現結果同時滿足兩個方程式,“Qwen-plus”完成數學題。

最后,來看看gpt-4o的表現,如下圖所示,選擇“gpt-4o”然后提交同樣的問題。

如下圖所示,gpt-4o得到了和“Qwen-plus”相同的結果,從執行過程上看,gpt-4o通過三步計算出方程的解之后,還加了一個“第四步”將計算的結果帶入原方程進行演算,顯得比較“嚴謹”。

通過上面的實驗,我們發現GPT-4o在解決方程組的問題上表現出了強大的能力。它不僅能夠準確地識別并理解輸入的方程組,還能夠逐步地提供詳細的解題過程。這充分展示了GPT-4o在以下幾個方面的優勢:

  • 精確的數學運算能力:GPT-4o能夠準確地進行代數運算,包括加減乘除以及分數運算。在解題過程中,它清晰地展示了每一步的計算步驟,確保結果的正確性。
  • 邏輯推理和問題分解能力:在解決方程組時,GPT-4o展示了良好的邏輯推理能力。它首先通過消元法簡化方程,然后逐步解出每一個變量的值,整個過程條理清晰,步驟分明。
  • 文本生成和解釋能力:除了數學運算,GPT-4o還能夠生成易于理解的文本解釋。這對于幫助用戶理解解題過程和結果非常有用,特別是在教育和學習場景中,能夠起到很好的輔導作用。

雖然此次展示的是文本和數學能力,但是從響應速度上看GPT-4o比之前的GPT-4有明顯的提升。但是這些能力還是在文字生成方面,通過前面的介紹GPT-4o還具備處理圖像、音頻等多模態信息的能力。它能夠綜合利用多種信息源,提供更加全面和準確的解決方案。接下來我們還要介紹其在多模態處理方面的能力。

圖片理解功能的實現

上面我們已經詳細介紹了GPT-4o在文本理解、推理和生成方面的強大能力。通過對復雜數學問題的準確解答,GPT-4o展示了其在處理復雜文本任務上的卓越性能。接下來,我們將深入探討GPT-4o的視覺處理能力。

為了全面評估其在這一方面的表現,我們準備了兩張圖片進行測試。首先,我們將展示一張風景圖片,看看GPT-4o是否能夠準確理解圖片內容,識別出其中的細節和場景信息。其次,我們將測試一張包含多個數學公式的圖片,檢驗GPT-4o是否能夠識別這些公式并理解它們的含義,甚至進一步解答其中涉及的數學方程式。

圖片識別代碼執行

直接上代碼, 在原有的selected_model.py文件中加入新函數,讓gpt-4o進行視覺識別。代碼如下:

def get_response_from_pic_by_gpt_4o(question:str,url: str):
    human_message = HumanMessage(content=[
    { "type": "text", "text": question },
    { "type": "image_url", "image_url": { "url": url }}
    ])
    llm = ChatOpenAI(model="gpt-4o")
    response = llm.invoke([ human_message ])
    print(response.content)
    return response.content

(1) 定義視覺處理函數

定義了一個名為get_response_from_pic_by_gpt_4o的函數,該函數接受兩個參數:一個字符串類型的question用來接收用戶的提問,另一個字符串類型的url用來接收圖片的URL地址。函數將根據這兩個參數生成并返回一個響應,也就是識別圖片的內容信息。

(2) 創建HumanMessage對象

human_message = HumanMessage(content=[
    { "type": "text", "text": question },
    { "type": "image_url", "image_url": { "url": url }}
])

創建了一個HumanMessage對象,并將其賦值給變量human_message。該對象包含一個content列表,列表中的第一個元素是包含文本問題的字典,第二個元素是包含圖片URL的字典。這種結構將文本和圖片信息組合在一起,以便傳遞給大語言模型。

(3) 調用gpt-4o處理圖片信息

llm = ChatOpenAI(model="gpt-4o")
response = llm.invoke([ human_message ])
return response.content

實例化一個ChatOpenAI對象,并將其賦值給變量llm。該對象使用了模型gpt-4o,用于處理輸入的human_message并生成響應。接著,調用llm對象的invoke方法,傳入包含human_message的列表。該方法會處理輸入的消息并返回一個響應。返回的響應賦值給變量response,并將識別圖片的內容信息content通過response.content的方式返回給調用者。

除了在selected_model.py 文件中添加函數之外,還需要修改app.py的部分代碼,如下:

(1) 創建文本輸入框讓用戶輸入圖片的URL

image_url = st.text_input("請輸入圖片的URL:")

使用Streamlit的text_input函數創建了一個文本輸入框,提示用戶輸入圖片的URL。用戶輸入的URL存儲在變量image_url中。

(2) 定義函數is_valid_url,驗證輸入的URL

def is_valid_url(url):
    regex = re.compile(
        r'^(?:http|ftp)s?://'  # http:// 或 https://
        r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'  # 域名
        r'localhost|'  # 本地地址
        r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|'  # IPv4 地址
        r'\[?[A-F0-9]*:[A-F0-9:]+\]?)'  # IPv6 地址
        r'(?::\d+)?'  # 可選端口號
        r'(?:/?|[/?]\S+)$', re.IGNORECASE)
    return re.match(regex, url) is not None

定義了一個名為is_valid_url的函數,該函數接受一個URL字符串作為參數。通過正則表達式regex驗證URL的格式是否有效。如果URL匹配正則表達式,函數返回True,否則返回False。有了這個函數就可以判斷我們輸入的URL是否是符合規則的。

(3) 調用模型識別圖片

if st.button("發送"):
if selected_model == "gpt-4o":
      if image_url.strip() and is_valid_url(image_url):
          response = get_response_from_pic_by_gpt_4o(user_question, image_url)
      else:
          response = get_response_from_gpt_4o(user_question)

這部分代碼是在原來代碼基礎上進行了修改,根據用戶選擇的模型調用相應的函數處理問題。如果選擇了gpt-4o,首先檢查用戶是否輸入了圖片URL且URL格式有效。如果滿足條件,則調用get_response_from_pic_by_gpt_4o函數,傳入用戶輸入的問題和圖片URL,獲取響應。如果未輸入圖片URL或URL格式無效,則調用get_response_from_gpt_4o函數,傳入用戶輸入的問題,獲取響應。

說白了,這段代碼通過以下步驟實現了用戶輸入圖片URL并調用相應函數生成響應的功能:

  • 創建一個文本輸入框讓用戶輸入圖片的URL。
  • 定義一個函數is_valid_url來驗證輸入的URL格式是否有效。
  • 創建一個發送按鈕,用戶點擊按鈕后執行代碼。
  • 根據所選模型和圖片URL的有效性,調用相應的函數生成并返回響應。

圖片識別功能測試

完成代碼編寫之后,我們開始功能的測試,首先確定要識別的圖片,我們通過地址得到如下圖所示的圖片。

然后,通過streamlit run app.py 啟動Web 交互界面,如下圖所示,輸入問題和圖片的URL地址,然后點擊“發送”按鈕,請求gpt-4o模型。

從輸出的內容可以看出,gpt-4o識別出了整個圖片,包括:步道、草地、樹木、藍天、白云、陽光等信息。

看來gpt-4o的表現還不錯,接著我們上點難度,提交一張多個數學公式組成的圖片,如下圖所示,圖片包含了多個數學公式,我們可以通過地址訪問。

看看gpt-4o能否理解、分析、計算出圖片中的數學公式,如下圖所示,在問題的部分我們告訴大模型“理解并求解圖片中的數學題”,然后給出圖片的URL地址,最后點擊“發送”按鈕請求大模型。

由于圖片中的公式眾多,我們取前面一部分展示給大家。 如下圖所示,gpt-4o 解析出圖片的公式按照圖片公式的序號:(a) (b) (c) 進行排列,針對每個公式提供了詳細的解題步驟,檢查了一下結果是正確的。

總結

通過本文的詳細探討和實例展示,我們看到了GPT-4o在多模態處理上的強大能力,以及它在實際應用中的廣泛潛力。無論是處理復雜的數學問題還是進行精確的圖像識別,GPT-4o都展現了卓越的性能和速度。本文提供的集成方法和代碼實現為開發者提供了實用的參考,幫助他們將GPT-4o的強大功能融入到自己的應用中。展望未來,GPT-4o的發布預示著AI技術的又一次飛躍,它將引領人機交互進入一個更加智能和自然的新時代。

參考

https://platform.openai.com/docs/guides/vision

https://openai.com/index/hello-gpt-4o/

https://openai.com/index/gpt-4o-and-more-tools-to-chatgpt-free/

https://github.com/sugarforever/LangChain-。Tutorials/blob/main/langchain_openai_gpt4o.ipynb

作者介紹

崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。

想了解更多AIGC的內容,請訪問:

51CTO AI.x社區

http://www.jxzklqfsx.com/aigc/

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2024-05-14 08:23:27

GPT-4oAI技術

2025-03-31 08:44:00

GPT-4o模型技術

2025-04-08 02:26:00

2024-06-05 08:29:35

2024-05-21 12:23:17

2024-06-05 13:09:26

2025-07-23 09:32:02

2024-05-14 19:16:52

ChatGPTGPT-4oOpenAI

2025-04-15 08:01:12

2024-05-24 14:04:04

2024-12-26 07:10:00

2025-04-23 15:25:27

語言模型Eagle 2.5英偉達

2025-05-26 09:05:00

2024-06-21 09:51:17

2025-08-11 08:42:00

GPT-5AI模型

2025-08-07 14:05:40

OpenAI大模型開源

2024-06-27 12:45:30

2025-06-06 14:17:11

模型訓練AI

2025-03-31 08:50:00

AI生成模型

2025-07-07 09:05:00

AI數據模型
點贊
收藏

51CTO技術棧公眾號

在线观看一区二区视频| 久久久电影一区二区三区| 欧美精品免费看| 精品一区二区视频在线观看| 日韩欧美一区二区三区在线观看 | 9765激情中文在线| 久久理论电影网| 亚洲在线观看视频| 黄色在线视频网址| 亚洲精彩视频| 亚洲一区av在线播放| 秋霞午夜鲁丝一区二区| 日韩免费小视频| 亚洲一级在线观看| 一级做a爰片久久| 亚洲av片一区二区三区| 国产原创一区二区| 国产精品入口尤物| 手机看片久久久| 亚洲一级黄色| 免费成人高清视频| 国产欧美一区二区视频| 国产又黄又爽又色| 欧美一区激情| 中文字幕亚洲激情| 37p粉嫩大胆色噜噜噜| 秋霞一区二区三区| 欧美人与z0zoxxxx视频| 欧美韩国日本在线| 国产伦久视频在线观看| 亚洲摸摸操操av| 小说区图片区图片区另类灬| 四虎影院在线播放| 成人h动漫精品一区二| 91影视免费在线观看| 最近中文字幕免费观看| 国产一区二区你懂的| 欧美成人精品一区二区| 91香蕉一区二区三区在线观看 | 亚洲精品一品区二品区三品区 | 大奶在线精品| 欧美一级精品在线| 在线视频观看91| 日韩成人综合网站| 欧美视频一区二| 中文字幕欧美人妻精品一区| 国产免费不卡| 色老头久久综合| 黑人糟蹋人妻hd中文字幕| gogo高清在线播放免费| 亚洲成a人v欧美综合天堂下载 | 你懂得视频在线观看| 欧美日韩激情在线一区二区三区| 精品中文视频在线| 欧美深性狂猛ⅹxxx深喉 | 欧美日韩在线精品一区二区三区激情综合| 福利二区91精品bt7086| 国产h视频在线播放| 国产高潮在线| 色综合久久综合| 国产精品人人妻人人爽人人牛| 在线精品亚洲欧美日韩国产| 91久久一区二区| 蜜臀av免费观看| 亚洲日韩中文字幕一区| 欧美精品日日鲁夜夜添| 国产人妻精品久久久久野外| 深夜福利一区| 精品视频在线播放免| 一级片手机在线观看| 日韩黄色大片| 欧美另类99xxxxx| 国产精品99无码一区二区| 国产精品久久久久久久免费软件| 国产成人亚洲综合91| 91国产免费视频| 国产精品888| 精品亚洲欧美日韩| 国产精品秘入口| 亚洲欧美国产77777| 日韩xxxx视频| 成人免费网站www网站高清| 欧美日韩精品欧美日韩精品| 99热这里只有精品2| 免费萌白酱国产一区二区三区| 亚洲另类图片色| 日本伦理一区二区三区| 国内在线观看一区二区三区| 国产suv精品一区二区| 国产又粗又黄又爽视频| 成人av在线资源网| 日韩免费毛片| 欧美xxxx性xxxxx高清| 懂色av中文一区二区三区天美 | 中文字幕精品无码一区二区| 久色婷婷小香蕉久久| 国产精品视频免费一区| 精品欧美不卡一区二区在线观看 | 久久影视电视剧免费网站清宫辞电视| 国产精品19乱码一区二区三区| 日韩精品一二区| 成人av免费看| 在线看黄色av| 午夜视频一区在线观看| 污污网站免费看| 国产精品色呦| 久久久成人精品视频| 欧美日韩一二三四区| 国产成人在线影院| 午夜视频久久久| 欧美a级在线观看| 欧美一级欧美三级在线观看| 乐播av一区二区三区| 好吊一区二区三区| 国产欧美日韩丝袜精品一区| 四季av日韩精品一区| 亚洲人成人一区二区在线观看| 成人一级片网站| youjizz亚洲| 久久久精品在线| 国产乡下妇女三片| 92精品国产成人观看免费| 波多野结衣 作品| 欧美一级网址| 国产亚洲精品美女久久久| 日韩少妇高潮抽搐| 国产69精品久久久久777| 一区二区欧美日韩| 国产私拍福利精品视频二区| 亚洲另类xxxx| 少妇太紧太爽又黄又硬又爽| 粉嫩嫩av羞羞动漫久久久| 中文字幕精品一区日韩| 免费高清视频在线一区| 日韩精品视频免费| 激情五月色婷婷| 成人美女视频在线看| 免费观看亚洲视频| 日日夜夜精品视频| 色综合色综合网色综合| 国产成人精品无码高潮| 中文字幕一区二区三区av| 在线观看亚洲色图| 成人一级毛片| 国产美女主播一区| 亚洲精品传媒| 欧美日韩精品一区二区三区蜜桃| 91禁男男在线观看| 美女视频免费一区| 一区二区不卡在线| 国产aa精品| 久久成年人免费电影| 国产特级黄色片| 一区二区三区成人| 国产国语老龄妇女a片| 亚洲小说区图片区| 国产精品国模大尺度私拍| jizz一区二区三区| 亚洲欧美日韩区| 亚洲综合成人av| 国产精品久久久久久久久免费樱桃 | 制服.丝袜.亚洲.中文.综合| 欧美风情第一页| 国产精品影视在线观看| 国内少妇毛片视频| 欧美日韩精品一区二区三区在线观看| 2019中文字幕在线| 国产h在线观看| 在线播放中文一区| 久久黄色免费网站| 久久夜色精品国产噜噜av| 日本www.色| 亚洲高清影视| 国产一区高清视频| 免费观看成人性生生活片| 最近2019免费中文字幕视频三| 国产青青草视频| 亚洲18色成人| 第一次破处视频| 精品一区二区三区久久久| 国产又粗又猛又爽又黄的网站| 亚洲+变态+欧美+另类+精品| 国产精品欧美激情| 污污视频在线| 亚洲欧美色图片| 国产美女主播在线观看| 五月婷婷久久综合| chinese全程对白| 99视频在线观看一区三区| 91国产精品视频在线观看| 欧美日本亚洲韩国国产| 欧美最大成人综合网| 国产视频一区二| 热久久这里只有精品| 黄色片免费在线观看| 亚洲国产成人久久综合| 一级黄色片在线观看| 亚洲va天堂va国产va久| 免费黄色激情视频| 91免费视频观看| 精品人妻一区二区三区免费| 亚洲影视综合| 国产 国语对白 露脸| 欧美限制电影| 精品国产福利| 精品国产不卡一区二区| 国产福利精品视频| av影片在线| 不卡毛片在线看| 国产一二三区在线| 精品国产百合女同互慰| 在线观看色网站| 欧美日韩免费区域视频在线观看| 国产午夜手机精彩视频| 欧美高清在线精品一区| 波多野结衣加勒比| 粉嫩绯色av一区二区在线观看| 尤蜜粉嫩av国产一区二区三区| 99在线观看免费视频精品观看| 一级全黄肉体裸体全过程| 精品国产一区二区三区| 久久爱av电影| 国产欧美啪啪| 国产精品久久波多野结衣| 久久精品 人人爱| 国产精品福利小视频| 天堂√8在线中文| 欧美精品激情在线| 欧美人与动牲性行为| 精品国产区一区二区三区在线观看| 蝌蚪视频在线播放| 国产丝袜一区二区三区免费视频| 韩国av免费在线| 欧美va亚洲va香蕉在线| 国产ts变态重口人妖hd| 欧美精品 日韩| 国产又爽又黄免费软件| 欧美夫妻性生活| 国产精品久久久久久在线| 欧美日韩国产在线播放网站| 中文字幕免费播放| 精品视频在线看| 亚洲影视一区二区| 欧美日韩国产在线观看| 国产精品自产拍| 91精品国产aⅴ一区二区| a天堂在线视频| 日韩精品一区二区三区老鸭窝| 国产精品欧美综合亚洲| 日韩色在线观看| 亚洲国产综合网| 亚洲成人黄色在线| 亚洲av毛片成人精品| 亚洲欧美日韩精品久久奇米色影视| 免费观看成年在线视频网站| 一本色道久久综合狠狠躁篇怎么玩 | 欧美一级在线免费观看| 亚洲经典中文字幕| 欧美日韩免费做爰大片| 在线国产精品播放| 高h视频在线观看| 欧美—级高清免费播放| 老色鬼在线视频| 日本最新高清不卡中文字幕| 97欧美成人| 91九色对白| 国产精品久av福利在线观看| 久久久一本精品99久久精品| 波多野结衣在线播放一区| 一个色的综合| 伊人久久大香线蕉综合热线| 国产成人无码一二三区视频| 美女一区二区视频| 日韩精品xxx| 91麻豆国产福利精品| 91狠狠综合久久久久久| 亚洲一区二区三区激情| 性无码专区无码| 欧美日韩国产精品成人| 亚洲黄色小说网| 亚洲人精品午夜在线观看| 日本暖暖在线视频| 韩剧1988在线观看免费完整版| 性欧美videohd高精| 亚洲影视九九影院在线观看| 久久视频在线观看| 一级特黄录像免费播放全99| 在线欧美日韩| 一本岛在线视频| av色综合久久天堂av综合| 欧美激情 一区| 亚洲国产日韩a在线播放性色| 国产suv精品一区二区33| 欧美一区二区私人影院日本| 三级在线电影| 欧美成人激情视频免费观看| 最新日韩三级| 国产欧美日韩综合一区在线观看| 日韩精品一区二区久久| 久久久久久久午夜| 国产激情91久久精品导航| 国产av自拍一区| 五月婷婷久久丁香| 99久久精品国产成人一区二区 | 精品久久久久久中文字幕动漫| 欧美大黑bbbbbbbbb在线| 日韩欧美亚洲天堂| 国产高清无密码一区二区三区| 妺妺窝人体色WWW精品| 亚洲成人av在线电影| 国产欧美日韩成人| 一个人看的www久久| 色戒汤唯在线观看| 成人av中文| 久久精品青草| 亚洲最大综合网| 26uuu久久天堂性欧美| 国产一级片视频| 欧美一区二区在线免费观看| 亚乱亚乱亚洲乱妇| 国产精品福利片| 五月综合久久| 国产免费黄视频| 99久久国产综合精品麻豆| 久草视频免费在线播放| 欧美一区二区日韩| 菠萝蜜视频国产在线播放| 成人国产精品色哟哟| 欧美3p视频| 欧美日韩中文不卡| 欧美国产精品一区二区三区| 一级做a爰片久久毛片| 国产偷亚洲偷欧美偷精品| zzzwww在线看片免费| 国产精品自拍首页| 国内精品久久久久久久97牛牛| 午夜诱惑痒痒网| 亚洲女爱视频在线| 精品久久国产视频| 久久99久久久久久久噜噜| 久久久久九九精品影院| 蜜臀av.com| 国产一区二区三区综合| 精品国产精品国产精品| 666欧美在线视频| 二区三区在线观看| 成人免费在线一区二区三区| 国产一区日韩一区| 国产麻豆剧传媒精品国产av| 亚洲国产wwwccc36天堂| 无码精品在线观看| 欧美一级淫片播放口| 国产成人精品999在线观看| 国产精品-区区久久久狼| 2022国产精品视频| 看黄色一级大片| 色吧影院999| 九九99久久精品在免费线bt| 免费的一级黄色片| 91在线免费播放| 一区二区乱子伦在线播放| 久久久成人精品| 动漫视频在线一区| 人妻少妇被粗大爽9797pw| 国产日产亚洲精品系列| 在线免费一级片| 久久99国产精品久久久久久久久| 国产精品一线| 成人性生生活性生交12| 中文字幕综合网| 亚洲黄色小说网| 国产成人在线一区二区| 99国产精品一区二区| 4438x全国最大成人| 欧美日韩性视频在线| 成人h小游戏| 亚洲自拍另类欧美丝袜| 亚洲精品影视| 美国一级黄色录像| 精品欧美久久久| 日本精品网站| 欧美高清中文字幕| 欧美国产日韩亚洲一区| av手机免费看| 日韩av免费一区| 欧美国产专区| 欧美激情aaa| 日韩欧美电影一二三| 欧美第一视频| 国产91沈先生在线播放| 国产欧美日韩不卡免费| 亚洲AV午夜精品| 国产精品一香蕉国产线看观看| 国产一区视频在线观看免费| 国产精品免费无码| 精品精品国产高清一毛片一天堂| 欧洲一区二区三区精品| 久久香蕉视频网站| 欧美极品aⅴ影院| 人妻91麻豆一区二区三区|