1
- from langchain .chat_models import ChatOpenAI
2
1
import os
3
2
import openai
4
3
from utils import parse_code_string
8
7
openai .api_key = os .getenv ("OPENROUTER_API_KEY" )
9
8
10
9
class AI :
11
- def __init__ (self , model = "gpt-4-32k" , temperature = 0.1 , max_tokens = 10000 ):
10
+ def __init__ (self , model = "gpt-4-32k" , model_provider = "openai" , modelrouter = "openrouter" , temperature = 0.1 , max_tokens = 10000 ):
12
11
self .temperature = temperature
13
12
self .max_tokens = max_tokens
13
+ self .model_provider = model_provider
14
14
self .model_name = model
15
- try :
16
- _ = ChatOpenAI (model_name = model ) # check to see if model is available to user
17
- except Exception as e :
18
- print (e )
19
- self .model_name = "gpt-3.5-turbo"
15
+ self .modelrouter = modelrouter
20
16
21
17
def write_code (self , prompt ):
22
18
message = [{"role" : "user" , "content" : str (prompt )}]
23
- response = completion (
24
- messages = message ,
25
- stream = False ,
26
- model = self .model_name ,
27
- max_tokens = self .max_tokens ,
28
- temperature = self .temperature
29
- )
19
+ if self .modelrouter == "openrouter" :
20
+ response = openai .ChatCompletion .create (
21
+ model = "{}/{}" .format (self .model_provider ,self .model_name ), # Optional (user controls the default)
22
+ messages = message ,
23
+ stream = False ,
24
+ max_tokens = self .max_tokens ,
25
+ temperature = self .temperature ,
26
+ headers = {
27
+ "HTTP-Referer" : "https://gpt-migrate.com" ,
28
+ "X-Title" : "GPT-Migrate" ,
29
+ },
30
+ )
31
+ else :
32
+ response = completion (
33
+ messages = message ,
34
+ stream = False ,
35
+ model = self .model_name ,
36
+ max_tokens = self .max_tokens ,
37
+ temperature = self .temperature
38
+ )
30
39
if response ["choices" ][0 ]["message" ]["content" ].startswith ("INSTRUCTIONS:" ):
31
40
return ("INSTRUCTIONS:" ,"" ,response ["choices" ][0 ]["message" ]["content" ][14 :])
32
41
else :
@@ -35,17 +44,32 @@ def write_code(self, prompt):
35
44
36
45
def run (self , prompt ):
37
46
message = [{"role" : "user" , "content" : str (prompt )}]
38
- response = completion (
39
- messages = message ,
40
- stream = True ,
41
- model = self .model_name ,
42
- max_tokens = self .max_tokens ,
43
- temperature = self .temperature
44
- )
45
- chat = ""
46
- for chunk in response :
47
- delta = chunk ["choices" ][0 ]["delta" ]
48
- msg = delta .get ("content" , "" )
49
- chat += msg
50
- return chat
47
+ if self .modelrouter == "openrouter" :
48
+ response = openai .ChatCompletion .create (
49
+ model = "{}/{}" .format (self .model_provider ,self .model_name ), # Optional (user controls the default)
50
+ messages = message ,
51
+ stream = False ,
52
+ max_tokens = self .max_tokens ,
53
+ temperature = self .temperature ,
54
+ headers = {
55
+ "HTTP-Referer" : "https://gpt-migrate.com" ,
56
+ "X-Title" : "GPT-Migrate" ,
57
+ },
58
+ )
59
+ return response ["choices" ][0 ]["message" ]["content" ]
60
+ else :
61
+ response = completion (
62
+ messages = message ,
63
+ stream = True ,
64
+ model = self .model_name ,
65
+ max_tokens = self .max_tokens ,
66
+ temperature = self .temperature
67
+ )
68
+ chat = ""
69
+ for chunk in response :
70
+ delta = chunk ["choices" ][0 ]["delta" ]
71
+ msg = delta .get ("content" , "" )
72
+ chat += msg
73
+ return chat
74
+
51
75
0 commit comments