feat: Use AsyncOpenAI client
This commit is contained in:
6
bot.py
6
bot.py
@@ -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]
|
||||||
)
|
)
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user