feat: Use AsyncOpenAI client

This commit is contained in:
2025-08-17 21:46:21 -07:00
parent d102bdbd16
commit d6d3cb3b17
2 changed files with 6 additions and 6 deletions

6
bot.py
View File

@@ -1,6 +1,6 @@
import discord import discord
from discord.ext import commands from discord.ext import commands
import openai from openai import AsyncOpenAI
import os import os
import base64 import base64
import aiohttp import aiohttp
@@ -28,7 +28,7 @@ bot = commands.Bot(command_prefix="/", intents=intents)
conversation_history = {} # Keyed by channel ID conversation_history = {} # Keyed by channel ID
# --- OpenAI Client --- # --- OpenAI Client ---
client = openai.OpenAI( client = AsyncOpenAI(
base_url=args.base_url, base_url=args.base_url,
api_key=OPENAI_API_KEY, api_key=OPENAI_API_KEY,
) )
@@ -90,7 +90,7 @@ async def on_message(message):
try: try:
async with message.channel.typing(): async with message.channel.typing():
response = client.chat.completions.create( response = await client.chat.completions.create(
model="gpt-4", # Or any other model you are using model="gpt-4", # Or any other model you are using
messages=conversation_history[channel_id] messages=conversation_history[channel_id]
) )

View File

@@ -26,7 +26,7 @@ class TestAoiBot(unittest.IsolatedAsyncioTestCase):
bot.newchat.callback = AsyncMock() bot.newchat.callback = AsyncMock()
@patch('bot.openai.OpenAI') @patch('bot.AsyncOpenAI')
async def test_on_message_text_only(self, MockOpenAI): async def test_on_message_text_only(self, MockOpenAI):
# Mock the OpenAI client and its response # Mock the OpenAI client and its response
mock_openai_instance = MockOpenAI.return_value mock_openai_instance = MockOpenAI.return_value
@@ -50,7 +50,7 @@ class TestAoiBot(unittest.IsolatedAsyncioTestCase):
bot.on_message.assert_awaited_once_with(message) bot.on_message.assert_awaited_once_with(message)
@patch('bot.openai.OpenAI') @patch('bot.AsyncOpenAI')
@patch('bot.aiohttp.ClientSession') @patch('bot.aiohttp.ClientSession')
async def test_on_message_with_image(self, MockClientSession, MockOpenAI): async def test_on_message_with_image(self, MockClientSession, MockOpenAI):
# Mock the OpenAI client # Mock the OpenAI client
@@ -107,7 +107,7 @@ class TestAoiBot(unittest.IsolatedAsyncioTestCase):
# Assertions # Assertions
bot.newchat.callback.assert_awaited_once_with(interaction, prompt=None) bot.newchat.callback.assert_awaited_once_with(interaction, prompt=None)
@patch('bot.openai.OpenAI') @patch('bot.AsyncOpenAI')
async def test_on_message_api_error(self, MockOpenAI): async def test_on_message_api_error(self, MockOpenAI):
# Mock the OpenAI client to raise an error # Mock the OpenAI client to raise an error
mock_openai_instance = MockOpenAI.return_value mock_openai_instance = MockOpenAI.return_value