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

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

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

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

51CTO AI.x社區

http://m.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://m.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技術棧公眾號

欧美日韩夜夜| 日本不卡在线| 国产精品美女| 亚洲奶大毛多的老太婆| 亚洲精品高清无码视频| 少妇高潮一区二区三区69| 黄色工厂这里只有精品| 亚洲二区中文字幕| 黄色片视频在线播放| 成年人视频免费在线观看| 精品一区二区三区香蕉蜜桃| 久久精品久久久久久| 国产ts在线观看| 色在线免费观看| 中文字幕高清不卡| 91沈先生播放一区二区| 国产美女激情视频| 欧美成人一区二免费视频软件| 亚洲精品电影网| 天天做天天干天天操| 性感女国产在线| 亚洲精品免费在线观看| 美女三级99| 成人久久精品人妻一区二区三区| 美女视频免费一区| 5278欧美一区二区三区| 澳门黄色一级片| 成人情趣视频网站| 亚洲色图色老头| 小毛片在线观看| 日本精品在线观看| 欧美色爱综合网| www黄色在线| 理论片午夜视频在线观看| 亚洲免费观看高清| 亚洲精品无人区| 国产尤物视频在线| 91影院在线免费观看| 91九色蝌蚪成人| 97人妻精品一区二区三区| 日本成人在线不卡视频| 欧美做受高潮1| 五月婷婷开心网| 在线观看一区| 午夜精品福利电影| 香蕉视频一区二区| 雨宫琴音一区二区在线| 97在线看免费观看视频在线观看| 亚洲精品美女免费| 日韩一级片免费视频| 麻豆tv入口在线看| 国产精品二三区| 水蜜桃亚洲精品| 男男激情在线| 久久精品这里都是精品| 免费影院在线观看一区| 欧美日韩国产中文字幕在线| 99久久久久免费精品国产 | 国产乱码字幕精品高清av | 欧美激情一区二区三区在线| 麻豆传媒一区| 国产高清一区在线观看| 亚洲国产精品精华液ab| 亚洲免费视频一区| 免费在线观看av网站| 1024成人网色www| 吴梦梦av在线| 成人福利在线观看视频| 一区二区三区中文字幕精品精品| www.日本在线视频| 黄色在线观看www| 欧美日韩在线影院| chinese少妇国语对白| 欧美free嫩15| 欧美精品九九99久久| 无码人妻少妇色欲av一区二区| 亚洲视频精选| 日韩av影视在线| 人人爽人人爽人人片| 欧美freesextv| 欧美成人四级hd版| 西西44rtwww国产精品| 亚洲欧美视频| 国产在线98福利播放视频| 国产suv一区二区| 国产在线播放一区| av在线不卡观看| 涩涩视频在线观看免费| 国产精品丝袜在线| 老司机激情视频| 色8久久影院午夜场| 欧美精品丝袜中出| 在线免费观看a级片| 久久精品不卡| 久久久久久18| 亚洲精品一区二区二区| 国产精品456露脸| 欧美久久久久久| 里番在线观看网站| 欧美日韩午夜激情| 日日干夜夜操s8| 牛牛影视一区二区三区免费看| 亚洲人在线视频| 久久精品99久久久久久| 日韩在线卡一卡二| 成人精品一二区| 国产黄色免费在线观看| 亚洲高清三级视频| 五月天av在线播放| 日韩影视在线观看| 欧美老女人xx| 中文字幕自拍偷拍| 99久久精品国产精品久久| 在线观看亚洲视频啊啊啊啊| 毛片电影在线| 日韩西西人体444www| 九九九视频在线观看| 狠狠入ady亚洲精品经典电影| 清纯唯美日韩制服另类| 精品国产无码一区二区| 欧美激情自拍偷拍| 欧美三级在线观看视频| 日韩一区免费| 日韩资源在线观看| 香蕉影院在线观看| 99视频精品在线| 四虎精品欧美一区二区免费| 91综合国产| 亚洲欧美国产一区二区三区| www.av视频在线观看| 国产精品自在在线| 亚洲一二三区精品| 日韩成人亚洲| 亚洲视频日韩精品| 台湾佬中文在线| 97久久人人超碰| 国产中文字幕视频在线观看| 亚洲一级大片| 欧美肥婆姓交大片| a级片免费观看| ㊣最新国产の精品bt伙计久久| 麻豆三级在线观看| 精品一区二区三区在线| 国产精品高潮粉嫩av| 免费黄色在线视频网站| 狠狠色香婷婷久久亚洲精品| xxxwww国产| 999在线观看精品免费不卡网站| 俄罗斯精品一区二区三区| 美女精品导航| 欧美精品一区二区在线观看| 国产在线视频二区| 粉嫩aⅴ一区二区三区四区五区| 精品国产一区二区三区在线| 国产色99精品9i| 久久中文精品视频| 国产麻豆免费观看| 亚洲精品视频免费看| 一卡二卡三卡四卡五卡| 黄色免费成人| 久久久久久国产精品mv| 欧美freesex| 中文字幕亚洲欧美一区二区三区| 中文字幕福利视频| 亚洲女厕所小便bbb| 色哟哟网站在线观看| 亚洲啪啪91| 蜜桃视频在线观看成人| jizz欧美| 日韩在线欧美在线国产在线| 99视频国产精品免费观看a| 一区2区3区在线看| 亚洲精品在线视频免费观看| 日韩在线观看一区二区| 日韩视频在线观看视频| 在线观看视频一区二区三区 | 综合在线影院| 色婷婷久久一区二区| 午夜精品久久久久久久99老熟妇| 无码av免费一区二区三区试看| 老牛影视av老牛影视av| 六月丁香综合在线视频| av动漫在线播放| 青草久久视频| 国产日产久久高清欧美一区| 青青青国内视频在线观看软件| 亚洲国产精品字幕| 中文字幕 欧美激情| 伊人婷婷欧美激情| 少妇真人直播免费视频| 久久精品国产亚洲aⅴ| 国产精品视频网站在线观看| 综合亚洲色图| 成人综合国产精品| 成人黄色动漫| 日韩网站在线观看| 日韩av成人| 欧美一区二区视频网站| 无码人妻精品一区二区50| 亚洲欧洲综合另类| 色噜噜日韩精品欧美一区二区| 激情五月播播久久久精品| 97成人在线免费视频| 婷婷另类小说| 欧美亚洲爱爱另类综合| 一区二区中文字幕在线观看| 国产精品欧美亚洲777777| 金瓶狂野欧美性猛交xxxx| 中文字幕视频在线免费欧美日韩综合在线看 | 蜜桃视频在线观看一区| 成人免费毛片在线观看| 999精品一区| 免费久久久一本精品久久区| 香蕉免费一区二区三区在线观看| 国产成人在线一区| 超碰97免费在线| 久久久国产精品x99av| 欧美日韩激情视频一区二区三区| 欧美成人精品二区三区99精品| 美女黄页在线观看| 日韩欧美成人区| 不卡的免费av| 一区二区三区中文字幕在线观看| 成人午夜免费影院| 久久蜜桃一区二区| 亚洲精品国产成人av在线| 国产在线视频精品一区| 亚洲一级片网站| 久久久久网站| 毛片在线播放视频| 在线播放亚洲| www.欧美黄色| 最新国产精品| 在线观看污视频| 7777久久香蕉成人影院| 亚洲欧美日韩在线综合| 波多野结衣在线观看一区二区三区 | 日本一区二区三区高清不卡| 国产伦精品一区二区三区妓女 | 欧洲亚洲一区二区| 欧美一性一交| 久久av一区二区| 日本妇女一区| 欧美aaaaa喷水| 亚洲三级精品| 日本一区免费在线观看| 欧美日韩伦理| 午夜精品福利一区二区| 精品国产中文字幕第一页 | 欧美区一区二| 青青草免费在线视频观看| 综合激情婷婷| 久久久久久久香蕉| 在线成人www免费观看视频| 欧美 日韩 亚洲 一区| 夜久久久久久| 久久久久久久久久久免费视频| 亚洲欧美日韩国产一区二区| 99久久激情视频| 裸体一区二区三区| 99中文字幕在线| 高清shemale亚洲人妖| 奇米777第四色| 久久久综合九色合综国产精品| 久久久久久亚洲中文字幕无码| 国产欧美视频一区二区三区| 超碰人人人人人人人| 亚洲天堂免费看| 九九免费精品视频| 欧美日韩国产麻豆| 懂色av蜜臀av粉嫩av喷吹| 欧美日韩一本到| 精品人妻无码一区二区三区蜜桃一 | 日本高清视频网站| 亚洲欧洲日本专区| 色哟哟免费在线观看 | 久久国产一级片| 欧美色xxxx| 国产免费av电影| 亚洲精品电影在线观看| 黄视频在线观看免费| 久久视频免费观看| 成人免费图片免费观看| 国产美女直播视频一区| 亚洲精品在线播放| 欧美一区二区三区四区在线观看地址| 欧美在线观看视频一区| 999一区二区三区| 人禽交欧美网站| 岛国av免费观看| 国产精品久久久久久亚洲毛片| 久久久久久久9999| 欧美伊人久久久久久久久影院 | 国产高清中文字幕| 欧美人狂配大交3d怪物一区| 日本免费一区视频| 自拍视频国产精品| sm捆绑调教国产免费网站在线观看| 国产成人aa精品一区在线播放| 国产一区二区三区精品在线观看| 久久久久高清| 欧美午夜久久| 一区二区三区免费播放| thepron国产精品| 亚洲视频重口味| 色噜噜狠狠一区二区三区果冻| www.成人精品| 色噜噜亚洲精品中文字幕| 午夜伦理福利在线| 国产精品毛片一区视频| 日韩在线观看一区| 97xxxxx| 成人精品视频一区| 日本黄色免费片| 91久久精品网| 青梅竹马是消防员在线| 欧美多人爱爱视频网站| 亚洲视频资源| 亚洲va韩国va欧美va精四季| 国产午夜久久| 日本道中文字幕| 亚洲精品第1页| 国产又粗又黄又爽视频| 一区二区三区天堂av| 中文字幕资源网在线观看免费| 国产精品一区在线观看| 综合久久久久| 青青草久久伊人| 国产精品入口麻豆九色| 国产成人无码av| 亚洲欧美日韩国产精品| 麻豆mv在线看| 久久国产精品久久| 亚洲美洲欧洲综合国产一区| 欧美熟妇精品一区二区| 亚洲综合免费观看高清完整版在线 | 二区三区不卡| 久久香蕉综合色| 亚洲免费在线| 野花社区视频在线观看| 精品欧美一区二区三区| 亚洲精品国产精品国| 欧美精品在线观看| 久久精品九色| www.亚洲成人网| 国产不卡一区视频| 麻豆亚洲av熟女国产一区二| 日韩欧美一二区| 欧美videosex性欧美黑吊| 91在线精品观看| 亚洲视频一区| 国产乱了高清露脸对白| 精品久久香蕉国产线看观看gif| 天天干天天操av| 日韩av三级在线观看| 精品视频国产| 天天影视色综合| 亚洲乱码中文字幕| 六月婷婷中文字幕| 51精品在线观看| 国产不卡av一区二区| 人人干人人干人人| 亚洲男人的天堂av| 高清一区二区三区四区| 欧美亚洲国产日本| 欧美日韩性在线观看| 91亚洲精品久久久蜜桃借种| 亚洲视频在线观看一区| 性一交一乱一精一晶| 91精品国产777在线观看| 最新精品国偷自产在线| 黑森林精品导航| 亚洲男人都懂的| 天天干天天爱天天操| 国产精品成久久久久三级| 国产精品毛片一区二区在线看| 中文字幕乱妇无码av在线| 精品久久久久久久久久ntr影视| 欧美精品少妇| 91深夜福利视频| 国产亚洲一级| www.4hu95.com四虎| 欧美白人最猛性xxxxx69交| 超碰在线视屏| 亚洲一区综合| 99久久免费精品高清特色大片| 中文字字幕在线观看| 久久久在线视频| 久久国产电影| 一本加勒比波多野结衣| 欧美日韩一区二区三区在线 | 国产福利成人在线| 亚洲色图网站| 国产人妻一区二区| 欧美成人a视频| 成人全视频免费观看在线看| www.xxx麻豆| 国产精品久久久久久久裸模| 隣の若妻さん波多野结衣| 国产精品久久久久久久久久小说|