gpt4_gradio
gpt4_gradio
由于网络原因下面代码务必在自己的电脑上运行,才能看到界面
0.1. 步骤 1:安装所需依赖的包
确保你已经安装了 Python,并使用 pip 安装 Gradio, OpenAI, 以及 Gemini 所需依赖库:
0.0.0.1. 如果在本地电脑执行下面命令
0.1. 如果在实验室执行下面命令
Collecting gradio==3.50
Using cached gradio-3.50.0-py3-none-any.whl (20.3 MB)
Requirement already satisfied: aiofiles<24.0,>=22.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (23.2.1)
Collecting altair<6.0,>=4.2.0 (from gradio==3.50)
Using cached altair-5.3.0-py3-none-any.whl (857 kB)
Requirement already satisfied: fastapi in /opt/conda/lib/python3.11/site-
packages (from gradio==3.50) (0.111.0)
Collecting ffmpy (from gradio==3.50)
Downloading ffmpy-0.4.0-py3-none-any.whl (5.8 kB)
Collecting gradio-client==0.6.1 (from gradio==3.50)
Using cached gradio_client-0.6.1-py3-none-any.whl (299 kB)
Requirement already satisfied: httpx in /opt/conda/lib/python3.11/site-packages
(from gradio==3.50) (0.26.0)
Requirement already satisfied: huggingface-hub>=0.14.0 in
/home/jovyan/.local/lib/python3.11/site-packages (from gradio==3.50) (0.23.3)
Requirement already satisfied: importlib-resources<7.0,>=1.3 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (6.0.0)
Requirement already satisfied: jinja2<4.0 in /opt/conda/lib/python3.11/site-
packages (from gradio==3.50) (3.1.2)
Requirement already satisfied: markupsafe~=2.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (2.1.3)
Requirement already satisfied: matplotlib~=3.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (3.9.1)
Requirement already satisfied: numpy~=1.0 in /opt/conda/lib/python3.11/site-
packages (from gradio==3.50) (1.26.2)
Requirement already satisfied: orjson~=3.0 in /opt/conda/lib/python3.11/site-
packages (from gradio==3.50) (3.10.3)
Requirement already satisfied: packaging in /opt/conda/lib/python3.11/site-
packages (from gradio==3.50) (23.2)
Collecting pandas<3.0,>=1.0 (from gradio==3.50)
Using cached pandas-2.2.2-cp311-cp311-
manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)
Requirement already satisfied: pillow<11.0,>=8.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (10.1.0)
Requirement already satisfied: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,
<3.0.0,>=1.7.4 in /opt/conda/lib/python3.11/site-packages (from gradio==3.50)
(2.5.3)
Collecting pydub (from gradio==3.50)
Using cached pydub-0.25.1-py2.py3-none-any.whl (32 kB)
Requirement already satisfied: python-multipart in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (0.0.9)
Requirement already satisfied: pyyaml<7.0,>=5.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (6.0)
Requirement already satisfied: requests~=2.0 in /opt/conda/lib/python3.11/site-
packages (from gradio==3.50) (2.31.0)
Collecting semantic-version~=2.0 (from gradio==3.50)
Using cached semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)
Requirement already satisfied: typing-extensions~=4.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (4.12.0)
Requirement already satisfied: uvicorn>=0.14.0 in
/opt/conda/lib/python3.11/site-packages (from gradio==3.50) (0.30.0)
Collecting websockets<12.0,>=10.0 (from gradio==3.50)
Using cached websockets-11.0.3-cp311-cp311-
manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_6
4.whl (130 kB)
Requirement already satisfied: fsspec in /opt/conda/lib/python3.11/site-packages
(from gradio-client==0.6.1->gradio==3.50) (2023.12.2)
Requirement already satisfied: jsonschema>=3.0 in
/opt/conda/lib/python3.11/site-packages (from altair<6.0,>=4.2.0->gradio==3.50)
(4.20.0)
Requirement already satisfied: toolz in /opt/conda/lib/python3.11/site-packages
(from altair<6.0,>=4.2.0->gradio==3.50) (0.12.0)
Requirement already satisfied: filelock in /opt/conda/lib/python3.11/site-
packages (from huggingface-hub>=0.14.0->gradio==3.50) (3.13.1)
Requirement already satisfied: tqdm>=4.42.1 in /opt/conda/lib/python3.11/site-
packages (from huggingface-hub>=0.14.0->gradio==3.50) (4.65.0)
Requirement already satisfied: contourpy>=1.0.1 in
/opt/conda/lib/python3.11/site-packages (from matplotlib~=3.0->gradio==3.50)
(1.2.1)
Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.11/site-
packages (from matplotlib~=3.0->gradio==3.50) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in
/opt/conda/lib/python3.11/site-packages (from matplotlib~=3.0->gradio==3.50)
(4.53.1)
Requirement already satisfied: kiwisolver>=1.3.1 in
/opt/conda/lib/python3.11/site-packages (from matplotlib~=3.0->gradio==3.50)
(1.4.5)
Requirement already satisfied: pyparsing>=2.3.1 in
/opt/conda/lib/python3.11/site-packages (from matplotlib~=3.0->gradio==3.50)
(3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in
/opt/conda/lib/python3.11/site-packages (from matplotlib~=3.0->gradio==3.50)
(2.8.2)
Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.11/site-
packages (from pandas<3.0,>=1.0->gradio==3.50) (2023.3)
Collecting tzdata>=2022.7 (from pandas<3.0,>=1.0->gradio==3.50)
Using cached tzdata-2024.1-py2.py3-none-any.whl (345 kB)
Requirement already satisfied: annotated-types>=0.4.0 in
/opt/conda/lib/python3.11/site-packages (from
pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,<3.0.0,>=1.7.4->gradio==3.50) (0.6.0)
Requirement already satisfied: pydantic-core==2.14.6 in
/opt/conda/lib/python3.11/site-packages (from
pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,<3.0.0,>=1.7.4->gradio==3.50) (2.14.6)
Requirement already satisfied: charset-normalizer<4,>=2 in
/opt/conda/lib/python3.11/site-packages (from requests~=2.0->gradio==3.50)
(3.2.0)
Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.11/site-
packages (from requests~=2.0->gradio==3.50) (3.4)
Requirement already satisfied: urllib3<3,>=1.21.1 in
/opt/conda/lib/python3.11/site-packages (from requests~=2.0->gradio==3.50)
(1.26.18)
Requirement already satisfied: certifi>=2017.4.17 in
/opt/conda/lib/python3.11/site-packages (from requests~=2.0->gradio==3.50)
(2023.11.17)
Requirement already satisfied: click>=7.0 in /opt/conda/lib/python3.11/site-
packages (from uvicorn>=0.14.0->gradio==3.50) (8.1.7)
Requirement already satisfied: h11>=0.8 in /opt/conda/lib/python3.11/site-
packages (from uvicorn>=0.14.0->gradio==3.50) (0.14.0)
Requirement already satisfied: starlette<0.38.0,>=0.37.2 in
/opt/conda/lib/python3.11/site-packages (from fastapi->gradio==3.50) (0.37.2)
Requirement already satisfied: fastapi-cli>=0.0.2 in
/opt/conda/lib/python3.11/site-packages (from fastapi->gradio==3.50) (0.0.4)
Requirement already satisfied:
ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1 in
/opt/conda/lib/python3.11/site-packages (from fastapi->gradio==3.50) (5.10.0)
Requirement already satisfied: email_validator>=2.0.0 in
/opt/conda/lib/python3.11/site-packages (from fastapi->gradio==3.50) (2.1.1)
Requirement already satisfied: anyio in /opt/conda/lib/python3.11/site-packages
(from httpx->gradio==3.50) (3.7.1)
Requirement already satisfied: httpcore==1.* in /opt/conda/lib/python3.11/site-
packages (from httpx->gradio==3.50) (1.0.2)
Requirement already satisfied: sniffio in /opt/conda/lib/python3.11/site-
packages (from httpx->gradio==3.50) (1.3.0)
Requirement already satisfied: dnspython>=2.0.0 in
/opt/conda/lib/python3.11/site-packages (from email_validator>=2.0.0->fastapi-
>gradio==3.50) (2.4.2)
Requirement already satisfied: typer>=0.12.3 in /opt/conda/lib/python3.11/site-
packages (from fastapi-cli>=0.0.2->fastapi->gradio==3.50) (0.12.3)
Requirement already satisfied: attrs>=22.2.0 in /opt/conda/lib/python3.11/site-
packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio==3.50) (23.1.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in
/opt/conda/lib/python3.11/site-packages (from jsonschema>=3.0-
>altair<6.0,>=4.2.0->gradio==3.50) (2023.6.1)
Requirement already satisfied: referencing>=0.28.4 in
/opt/conda/lib/python3.11/site-packages (from jsonschema>=3.0-
>altair<6.0,>=4.2.0->gradio==3.50) (0.29.1)
Requirement already satisfied: rpds-py>=0.7.1 in /opt/conda/lib/python3.11/site-
packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio==3.50) (0.8.10)
Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.11/site-
packages (from python-dateutil>=2.7->matplotlib~=3.0->gradio==3.50) (1.16.0)
Requirement already satisfied: httptools>=0.5.0 in
/opt/conda/lib/python3.11/site-packages (from uvicorn>=0.14.0->gradio==3.50)
(0.6.1)
Requirement already satisfied: python-dotenv>=0.13 in
/opt/conda/lib/python3.11/site-packages (from uvicorn>=0.14.0->gradio==3.50)
(1.0.0)
Requirement already satisfied: uvloop!=0.15.0,!=0.15.1,>=0.14.0 in
/opt/conda/lib/python3.11/site-packages (from uvicorn>=0.14.0->gradio==3.50)
(0.19.0)
Requirement already satisfied: watchfiles>=0.13 in
/opt/conda/lib/python3.11/site-packages (from uvicorn>=0.14.0->gradio==3.50)
(0.22.0)
Requirement already satisfied: shellingham>=1.3.0 in
/opt/conda/lib/python3.11/site-packages (from typer>=0.12.3->fastapi-cli>=0.0.2-
>fastapi->gradio==3.50) (1.5.4)
Requirement already satisfied: rich>=10.11.0 in /opt/conda/lib/python3.11/site-
packages (from typer>=0.12.3->fastapi-cli>=0.0.2->fastapi->gradio==3.50)
(13.7.1)
Requirement already satisfied: markdown-it-py>=2.2.0 in
/opt/conda/lib/python3.11/site-packages (from rich>=10.11.0->typer>=0.12.3-
>fastapi-cli>=0.0.2->fastapi->gradio==3.50) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in
/opt/conda/lib/python3.11/site-packages (from rich>=10.11.0->typer>=0.12.3-
>fastapi-cli>=0.0.2->fastapi->gradio==3.50) (2.15.1)
Requirement already satisfied: mdurl~=0.1 in /opt/conda/lib/python3.11/site-
packages (from markdown-it-py>=2.2.0->rich>=10.11.0->typer>=0.12.3->fastapi-
cli>=0.0.2->fastapi->gradio==3.50) (0.1.2)
Installing collected packages: pydub, websockets, tzdata, semantic-version,
ffmpy, pandas, gradio-client, altair, gradio
Attempting uninstall: websockets
Found existing installation: websockets 12.0
Uninstalling websockets-12.0:
Successfully uninstalled websockets-12.0
Successfully installed altair-5.3.0 ffmpy-0.4.0 gradio-3.50.0 gradio-client-
0.6.1 pandas-2.2.2 pydub-0.25.1 semantic-version-2.10.0 tzdata-2024.1
websockets-11.0.3
Note: you may need to restart the kernel to use updated packages.
Note: you may need to restart the kernel to use updated packages.
Collecting anthropic
Downloading anthropic-0.32.0-py3-none-any.whl (866 kB)
•[2K •[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━•[0m •[32m866.6/866.6 kB•[0m
•[31m43.5 MB/s•[0m eta •[36m0:00:00•[0m
•[?25hRequirement already satisfied: openai in /opt/conda/lib/python3.11/site-
packages (1.6.1)
Requirement already satisfied: anyio<5,>=3.5.0 in
/opt/conda/lib/python3.11/site-packages (from anthropic) (3.7.1)
Requirement already satisfied: distro<2,>=1.7.0 in
/opt/conda/lib/python3.11/site-packages (from anthropic) (1.9.0)
Requirement already satisfied: httpx<1,>=0.23.0 in
/opt/conda/lib/python3.11/site-packages (from anthropic) (0.26.0)
Collecting jiter<1,>=0.4.0 (from anthropic)
Downloading jiter-0.5.0-cp311-cp311-
manylinux_2_17_x86_64.manylinux2014_x86_64.whl (319 kB)
•[2K •[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━•[0m •[32m319.2/319.2 kB•[0m
•[31m83.3 MB/s•[0m eta •[36m0:00:00•[0m
•[?25hRequirement already satisfied: pydantic<3,>=1.9.0 in
/opt/conda/lib/python3.11/site-packages (from anthropic) (2.5.3)
Requirement already satisfied: sniffio in /opt/conda/lib/python3.11/site-
packages (from anthropic) (1.3.0)
Requirement already satisfied: tokenizers>=0.13.0 in
/home/jovyan/.local/lib/python3.11/site-packages (from anthropic) (0.13.3)
Requirement already satisfied: typing-extensions<5,>=4.7 in
/opt/conda/lib/python3.11/site-packages (from anthropic) (4.12.0)
Requirement already satisfied: tqdm>4 in /opt/conda/lib/python3.11/site-packages
(from openai) (4.65.0)
Requirement already satisfied: idna>=2.8 in /opt/conda/lib/python3.11/site-
packages (from anyio<5,>=3.5.0->anthropic) (3.4)
Requirement already satisfied: certifi in /opt/conda/lib/python3.11/site-
packages (from httpx<1,>=0.23.0->anthropic) (2023.11.17)
Requirement already satisfied: httpcore==1.* in /opt/conda/lib/python3.11/site-
packages (from httpx<1,>=0.23.0->anthropic) (1.0.2)
Requirement already satisfied: h11<0.15,>=0.13 in
/opt/conda/lib/python3.11/site-packages (from httpcore==1.*->httpx<1,>=0.23.0-
>anthropic) (0.14.0)
Requirement already satisfied: annotated-types>=0.4.0 in
/opt/conda/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->anthropic)
(0.6.0)
Requirement already satisfied: pydantic-core==2.14.6 in
/opt/conda/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->anthropic)
(2.14.6)
Installing collected packages: jiter, anthropic
Successfully installed anthropic-0.32.0 jiter-0.5.0
Note: you may need to restart the kernel to use updated packages.
import os
googleapi_key = os.getenv('GOOGLE_API_KEY')
#claude_key = os.getenv('CLAUDE_API_KEY')
claude_key = "sk-ant-api03-
E5wqz5k7kfnnpzEDWUE0J3rh_QD0NnHBH3S7hlaURtDzxcdYlkLGmVOYgCQJPk1GGKrPkQfKyxM_ydgf
2PIawg-3hRoagAA"
#print(googleapi_key)
import gradio as gr
from openai import OpenAI
import base64
from PIL import Image
import io
import os
import google.generativeai as genai
import anthropic, openai
def encode_image_to_base64(image):
buffered = io.BytesIO()
image.save(buffered, format="JPEG")
return base64.b64encode(buffered.getvalue()).decode('utf-8')
response = client.chat.completions.create(
#model="gpt-4-vision-preview",
model="gpt-4-turbo",
messages=messages,
max_tokens=1024,
)
return response.choices[0].message.content
response = client.chat.completions.create(
model="gpt-4o",
#model=model_type,
messages=messages,
max_tokens=1024,
)
return response.choices[0].message.content
response = client.chat.completions.create(
model="gpt-4o-mini",
#model=model_type,
messages=messages,
max_tokens=1024,
)
return response.choices[0].message.content
# Function to query Gemini-Pro
return response.text
def main():
with gr.Blocks() as demo:
gr.Markdown("### 输入文本")
input_text = gr.Textbox(lines=2, label="输入文本")
input_images = [
gr.Image(type="pil", label="Upload Image", tool="editor") for i in
range(3)]
output_gpt4 = gr.Textbox(label="GPT-4v-Turbo 输出")
output_gemini = gr.Textbox(label="Gemini-Pro 输出")
output_claude3 = gr.Textbox(label="Claude3 sonnet 输出")
output_gpt4o = gr.Textbox(label="GPT-4o 输出")
output_gpt4o_mini = gr.Textbox(label="GPT-4o-mini 输出")
btn_gpt4 = gr.Button("调用GPT-4")
btn_gemini = gr.Button("调用Gemini-Pro")
btn_claude = gr.Button("调用Claude-3-sonnet")
btn_gpt4o = gr.Button("调用GPT-4o")
btn_gpt4o_mini = gr.Button("调用GPT-4o-mini")
btn_gpt4.click(fn=query_gpt4_vision, inputs=[
input_text] + input_images, outputs=output_gpt4)
btn_gemini.click(fn=query_gemini_vision, inputs=[
input_text] + input_images, outputs=output_gemini)
btn_claude.click(fn=query_claude_vision, inputs=[
input_text] + input_images, outputs=output_claude3)
btn_gpt4o.click(fn=query_gpt4o_vision, inputs=[
input_text] + input_images, outputs=output_gpt4o)
btn_gpt4o_mini.click(fn=query_gpt4o_mini_vision, inputs=[
input_text] + input_images, outputs=output_gpt4o_mini)
demo.launch(share=True)
if __name__ == "__main__":
main()
This share link expires in 72 hours. For free permanent hosting and GPU
upgrades, run `gradio deploy` from Terminal to deploy to Spaces
(https://huggingface.co/spaces)
Traceback (most recent call last):
File "/opt/conda/lib/python3.11/site-packages/gradio/routes.py", line 534, in
predict
output = await route_utils.call_process_api(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/conda/lib/python3.11/site-packages/gradio/route_utils.py", line
226, in call_process_api
output = await app.get_blocks().process_api(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/conda/lib/python3.11/site-packages/gradio/blocks.py", line 1550, in
process_api
result = await self.call_function(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/conda/lib/python3.11/site-packages/gradio/blocks.py", line 1185, in
call_function
prediction = await anyio.to_thread.run_sync(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/conda/lib/python3.11/site-packages/anyio/to_thread.py", line 33, in
run_sync
File "/opt/conda/lib/python3.11/site-packages/anyio/_backends/_asyncio.py",
line 877, in run_sync_in_worker_thread
self.idle_workers.remove(self)
^^^^^^^^^^^^
File "/opt/conda/lib/python3.11/site-packages/anyio/_backends/_asyncio.py",
line 807, in run
class WorkerThread(Thread):
建议:
确保你的机器上已经安装了必要的 Python 包。
如果使用 OpenAI 模型,确保你已经设置了正确的 API 密钥。
0.1. Examples
菜品价格预估:估算一下这桌子菜的价格,给出每道菜的市场价格。假设这是北京的一家中档餐厅
figure 理解:请生成这张图片的 caption
网页设计:生成下面设计图对应的网站源码
视觉结合知识的推断:根据图中信息,猜测这是什么型号的 GPU?请列出所有可能的 GPU 型号,
并给出你的判断依据。猜测大致的生产年限
这张图片中的跳水动作,可以打几分?为什么?给出打分依据
下面图1中给出的是PCB瑕疵检测的一个标准模板,图2是一个带标注信息的瑕疵板,请观察图3中
是否存在瑕疵?
import gradio as gr
from openai import OpenAI
import base64
from PIL import Image
import io
import os
def encode_image_to_base64(image):
buffered = io.BytesIO()
image.save(buffered, format="JPEG")
return base64.b64encode(buffered.getvalue()).decode('utf-8')
def query_gpt4_vision(*inputs):
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
messages = [{"role": "user", "content": []}]
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=messages,
max_tokens=1024,
)
return response.choices[0].message.content
def query_gemini_vision(*inputs):
# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.
# GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')
# print(GOOGLE_API_KEY)
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-1.5-flash')
query = []
for item in inputs:
if item is not None:
query.append(item)
response = model.generate_content(query, stream=False)
response.resolve()
return response.text
'''
iface = gr.Interface(
fn=query_gpt4_vision,
inputs=input_components,
outputs=gr.components.Text(update=True),
)
iface.launch(share=True)
'''
btn_gpt4.click(fn=query_gpt4_vision,
inputs=input_components, outputs=output_gpt4)
btn_other_api.click(fn=query_gemini_vision,
inputs=input_components, outputs=output_other_api)
demo.launch(share=True)
if __name__ == "__main__":
main()
This share link expires in 72 hours. For free permanent hosting and GPU
upgrades, run `gradio deploy` from Terminal to deploy to Spaces
(https://huggingface.co/spaces)
具身智能场景:
假设你是一个机器人,在厨房从事工作,你会执行的操作包括 靠近(物体坐标), 抓取(物体坐标),
移动(开始坐标,结束坐标),这里的坐标需要根据你的视觉系统来估计 xy 位置,以及深度信息 z。
人类会给你指令,你需要按照人类指令要求的完成对应的操作。比如,人类:把抽屉里的绿色包装
袋拿出来。此时你看到的画面是这样的:
请问接下来你该执行什么指令?只给出指令即可,但是需要包括具体的坐标信息(假设当前画面的
长宽为单位 1,使用你估计的深度信息以及 xy 偏移位置)