OpenAI Audio API Client
Source vllm-project/vllm.
1"""An example showing how to use vLLM to serve VLMs.23Launch the vLLM server with the following command:4vllm serve fixie-ai/ultravox-v0_35"""6import base6478import requests9from openai import OpenAI1011from vllm.assets.audio import AudioAsset1213# Modify OpenAI's API key and API base to use vLLM's API server.14openai_api_key = "EMPTY"15openai_api_base = "http://localhost:8000/v1"1617client = OpenAI(18 # defaults to os.environ.get("OPENAI_API_KEY")19 api_key=openai_api_key,20 base_url=openai_api_base,21)2223models = client.models.list()24model = models.data[0].id2526# Any format supported by librosa is supported27audio_url = AudioAsset("winning_call").url2829# Use audio url in the payload30chat_completion_from_url = client.chat.completions.create(31 messages=[{32 "role":33 "user",34 "content": [35 {36 "type": "text",37 "text": "What's in this audio?"38 },39 {40 "type": "audio_url",41 "audio_url": {42 "url": audio_url43 },44 },45 ],46 }],47 model=model,48 max_tokens=64,49)5051result = chat_completion_from_url.choices[0].message.content52print(f"Chat completion output:{result}")535455# Use base64 encoded audio in the payload56def encode_audio_base64_from_url(audio_url: str) -> str:57 """Encode an audio retrieved from a remote url to base64 format."""5859 with requests.get(audio_url) as response:60 response.raise_for_status()61 result = base64.b64encode(response.content).decode('utf-8')6263 return result646566audio_base64 = encode_audio_base64_from_url(audio_url=audio_url)67chat_completion_from_base64 = client.chat.completions.create(68 messages=[{69 "role":70 "user",71 "content": [72 {73 "type": "text",74 "text": "What's in this audio?"75 },76 {77 "type": "audio_url",78 "audio_url": {79 # Any format supported by librosa is supported80 "url": f"data:audio/ogg;base64,{audio_base64}"81 },82 },83 ],84 }],85 model=model,86 max_tokens=64,87)8889result = chat_completion_from_base64.choices[0].message.content90print(f"Chat completion output:{result}")