Skip to content

Commit

Permalink
feat: code-review-gpt ci (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattzcarey authored Jul 20, 2023
1 parent 76db7a8 commit 2ff8b5b
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 6 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/code-review-gpt.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Code Review GPT

on:
pull_request:
branches: [main]

permissions:
pull-requests: write
contents: read

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- uses: actions/setup-node@v3
with:
node-version: 18

- name: Install code-review-gpt
run: npm install code-review-gpt

- name: Run code review script
run: npx code-review-gpt review --ci
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BASE_SHA: ${{ github.event.pull_request.base.sha }}
GITHUB_SHA: ${{ github.sha }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
5 changes: 3 additions & 2 deletions genoss/api/completions_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ class RequestBody(BaseModel):

@completions_router.post("/chat/completions", tags=["Chat Completions"])
async def post_chat_completions(
body: RequestBody = Body(...), api_key=Depends(AuthHandler.check_auth_header)
body: RequestBody = Body(...),
api_key=Depends(AuthHandler.check_auth_header, use_cache=False),
) -> Dict:
model = ModelFactory.get_model_from_name(body.model, api_key)
model = ModelFactory.get_model_from_name(body.model, api_key) # pyright: ignore

if model is None:
raise HTTPException(status_code=404, detail="Model not found")
Expand Down
2 changes: 1 addition & 1 deletion genoss/llm/openai/openai_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class OpenAILLM(BaseGenossLLM):
openai_api_key: Optional[str] = Field(None)

def __init__(self, model_name: str, api_key, *args, **kwargs):
super().__init__(name=self.name, description=self.description, *args, **kwargs)
super().__init__(*args, **kwargs)

if api_key is None:
raise ValueError("API key missing")
Expand Down
4 changes: 3 additions & 1 deletion genoss/services/model_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@

class ModelFactory:
@staticmethod
def get_model_from_name(name: str, api_key) -> Optional[BaseGenossLLM]:
def get_model_from_name(
name: str, api_key: Optional[str] = None
) -> Optional[BaseGenossLLM]:
if name.lower() in OPENAI_NAME_LIST:
return OpenAILLM(model_name=name, api_key=api_key)
if name.lower() == "gpt4all":
Expand Down
19 changes: 17 additions & 2 deletions tests/services/test_model_factory.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
import unittest

from genoss.llm.fake_llm import FAKE_LLM_NAME, FakeLLM
from genoss.llm.hf_hub.falcon import HuggingFaceHubFalconLLM
from genoss.llm.hf_hub.gpt2 import HuggingFaceHubGPT2LLM
from genoss.llm.hf_hub.llama2 import HuggingFaceHubLlama2LLM
from genoss.llm.local.gpt4all import Gpt4AllLLM
from genoss.llm.openai.openai_llm import OpenAILLM
from genoss.services.model_factory import ModelFactory


class TestModelFactory(unittest.TestCase):
def test_get_model_from_name_hf_gpt2(self):
model = ModelFactory.get_model_from_name("hf-gpt2", "api_key")
self.assertIsInstance(model, HuggingFaceHubGPT2LLM)

def test_get_model_from_name_hf_falcon(self):
model = ModelFactory.get_model_from_name("hf-falcon", "api_key")
self.assertIsInstance(model, HuggingFaceHubFalconLLM)

def test_get_model_from_name_hf_llama2(self):
model = ModelFactory.get_model_from_name("hf-llama2", "api_key")
self.assertIsInstance(model, HuggingFaceHubLlama2LLM)

def test_get_model_from_name_openai(self):
model = ModelFactory.get_model_from_name("gpt-4")
model = ModelFactory.get_model_from_name("gpt-4", "api_key")
self.assertIsInstance(model, OpenAILLM)

def test_get_model_from_name_gpt4all(self):
Expand All @@ -20,5 +35,5 @@ def test_get_model_from_name_fake(self):
self.assertIsInstance(model, FakeLLM)

def test_get_model_from_name_unknown(self):
model = ModelFactory.get_model_from_name("unknown")
model = ModelFactory.get_model_from_name("unknown", "")
self.assertIsNone(model)

0 comments on commit 2ff8b5b

Please sign in to comment.