Skip to content

Commit

Permalink
add deepseek provider
Browse files Browse the repository at this point in the history
  • Loading branch information
djcopley committed Jan 26, 2025
1 parent 52e11b3 commit cf76a9c
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/shelloracle/providers/deepseek.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from collections.abc import AsyncIterator

from openai import APIError, AsyncOpenAI

from shelloracle.providers import Provider, ProviderError, Setting, system_prompt


class Deepseek(Provider):
name = "Deepseek"

api_key = Setting(default="")
model = Setting(default="deepseek-chat")

def __init__(self):
if not self.api_key:
msg = "No API key provided"
raise ProviderError(msg)
self.client = AsyncOpenAI(base_url="https://api.deepseek.com/v1", api_key=self.api_key)

async def generate(self, prompt: str) -> AsyncIterator[str]:
try:
stream = await self.client.chat.completions.create(
model=self.model,
messages=[{"role": "system", "content": system_prompt}, {"role": "user", "content": prompt}],
stream=True,
)
async for chunk in stream:
if chunk.choices[0].delta.content is not None:
yield chunk.choices[0].delta.content
except APIError as e:
msg = f"Something went wrong while querying OpenAI: {e}"
raise ProviderError(msg) from e

0 comments on commit cf76a9c

Please sign in to comment.