SimplerLLM 0.1.8__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/PKG-INFO +21 -22
  2. SimplerLLM-0.2.0/SimplerLLM/language/embeddings.py +251 -0
  3. SimplerLLM-0.2.0/SimplerLLM/language/llm.py +206 -0
  4. SimplerLLM-0.2.0/SimplerLLM/language/llm_providers/anthropic_llm.py +156 -0
  5. SimplerLLM-0.2.0/SimplerLLM/language/llm_providers/gemini_llm.py +214 -0
  6. SimplerLLM-0.2.0/SimplerLLM/language/llm_providers/llm_response_models.py +9 -0
  7. SimplerLLM-0.2.0/SimplerLLM/language/llm_providers/openai_llm.py +199 -0
  8. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/tools/json_helpers.py +44 -8
  9. SimplerLLM-0.2.0/SimplerLLM/tools/text_chunker.py +228 -0
  10. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/PKG-INFO +21 -22
  11. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/SOURCES.txt +3 -1
  12. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/requires.txt +1 -0
  13. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/setup.py +1 -1
  14. SimplerLLM-0.1.8/SimplerLLM/language/llm.py +0 -336
  15. SimplerLLM-0.1.8/SimplerLLM/language/llm_providers/claude_llm.py +0 -301
  16. SimplerLLM-0.1.8/SimplerLLM/language/llm_providers/gemini_llm.py +0 -338
  17. SimplerLLM-0.1.8/SimplerLLM/language/llm_providers/openai_llm.py +0 -165
  18. SimplerLLM-0.1.8/SimplerLLM/tools/text_chunker.py +0 -106
  19. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/__init__.py +0 -0
  20. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/image/__init__.py +0 -0
  21. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/image/img_helper_funcs.py +0 -0
  22. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/image/stability_ai.py +0 -0
  23. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/language/__init__.py +0 -0
  24. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/language/llm_addons.py +0 -0
  25. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/language/llm_providers/__init__.py +0 -0
  26. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/prompts/__init__.py +0 -0
  27. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/prompts/prompt_builder.py +0 -0
  28. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/tools/__init__.py +0 -0
  29. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/tools/file_loader.py +0 -0
  30. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/tools/generic_loader.py +0 -0
  31. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/tools/rapid_api.py +0 -0
  32. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM/tools/serp.py +0 -0
  33. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/dependency_links.txt +0 -0
  34. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/top_level.txt +0 -0
  35. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/my_tests/__init__.py +0 -0
  36. {SimplerLLM-0.1.8 → SimplerLLM-0.2.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SimplerLLM
3
- Version: 0.1.8
3
+ Version: 0.2.0
4
4
  Summary: An easy-to-use Library for interacting with language models.
5
5
  Home-page: https://github.com/hassancs91/SimplerLLM
6
6
  Author: Hasan Aboul Hasan
@@ -19,25 +19,24 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
19
  Requires-Python: >=3.6
20
20
  Description-Content-Type: text/markdown
21
21
 
22
-
23
22
  # ⚪ SimplerLLM (Beta)
24
23
 
25
24
  ⚡ Your Easy Pass to Advanced AI ⚡
26
25
 
27
26
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
28
27
 
29
-
30
28
  ## 🤔 What is SimplerLLM?
31
29
 
32
30
  SimplerLLM is an open-source Python library designed to simplify interactions with Large Language Models (LLMs) for researchers and beginners. It offers a unified interface for different LLM providers and a suite of tools to enhance language model capabilities and make it Super easy for anyone to develop AI-powered tools and apps.
33
31
 
34
32
  ## Easy Installation
33
+
35
34
  With pip:
35
+
36
36
  ```bash
37
37
  pip install simplerllm
38
38
  ```
39
39
 
40
-
41
40
  ## Features
42
41
 
43
42
  - **Unified LLM Interface**: Define an LLM instance in one line for providers like OpenAI and Google Gemini. Future versions will support more APIs and LLM providers.
@@ -45,17 +44,17 @@ pip install simplerllm
45
44
  - **RapidAPI Connector**: Connect with AI services on RapidAPI.
46
45
  - **SERP Integration**: Perform searches using DuckDuckGo, with more search engines coming soon.
47
46
  - **Prompt Template Builder**: Easily create and manage prompt templates.
48
- And Much More Coming Soon!
49
-
47
+ And Much More Coming Soon!
50
48
 
51
49
  ### Setting Up Environment Variables
52
- To use this library, you need to set several API keys in your environment. Start by creating a .env file in the root directory of your project and adding your API keys there.
50
+
51
+ To use this library, you need to set several API keys in your environment. Start by creating a .env file in the root directory of your project and adding your API keys there.
53
52
 
54
53
  🔴 This file should be kept private and not committed to version control to protect your keys.
55
54
 
56
55
  Here is an example of what your .env file should look like:
57
56
 
58
- ```
57
+ ```
59
58
  OPENAI_API_KEY="your_openai_api_key_here"
60
59
  GEMENI_API_KEY="your_gemeni_api_key_here"
61
60
  CLAUDE_API_KEY="your_claude_api_key_here"
@@ -66,32 +65,28 @@ STABILITY_API_KEY="your_stability_api_key_here" #for image generation
66
65
 
67
66
  ```
68
67
 
69
-
70
-
71
-
72
68
  ### Creating an LLM Instance
73
69
 
74
70
  ```python
75
71
  from SimplerLLM.language.llm import LLM, LLMProvider
76
72
 
77
73
  # For OpenAI
78
- llm_instance = LLM.create(provider=LLMProvider.OPENAI)
74
+ llm_instance = LLM.create(provider=LLMProvider.OPENAI, model_name="gpt-3.5-turbo")
79
75
 
80
76
  # For Google Gemini
81
77
  #llm_instance = LLM.create(provider=LLMProvider.GEMINI,model_name="gemini-pro")
82
78
 
83
- # For Claude Gemini
84
- #llm_instance = LLM.create(LLMProvider.CLAUDE, model_name="claude-3-opus-20240229")
85
-
79
+ # For Anthropic Claude
80
+ #llm_instance = LLM.create(LLMProvider.ANTHROPIC, model_name="claude-3-opus-20240229")
86
81
 
87
-
88
- response = llm_instance.generate_text(user_prompt="generate a 5 words sentence")
82
+ response = llm_instance.generate_response(prompt="generate a 5 words sentence")
89
83
 
90
84
  ```
91
85
 
92
86
  ### Using Tools
93
87
 
94
88
  #### SERP
89
+
95
90
  ```python
96
91
  from SimplerLLM.tools.serp import search_with_serper_api
97
92
 
@@ -102,6 +97,7 @@ search_results = search_with_serper_api("your search query", num_results=3)
102
97
  ```
103
98
 
104
99
  #### Generic Text Loader
100
+
105
101
  ```python
106
102
  from SimplerLLM.tools.generic_loader import load_content
107
103
 
@@ -112,6 +108,7 @@ print(text_file.content)
112
108
  ```
113
109
 
114
110
  #### Calling any RapidAPI API
111
+
115
112
  ```python
116
113
  from SimplerLLM.tools.rapid_api import RapidAPIClient
117
114
 
@@ -126,7 +123,6 @@ response = api_client.call_api(api_url, method='GET', params=api_params)
126
123
 
127
124
  ```
128
125
 
129
-
130
126
  #### Prompt Template Builder
131
127
 
132
128
  ```python
@@ -148,7 +144,7 @@ multi_value_prompt_template = """Hello {name}, your next meeting is on {date}.
148
144
  params_list = [
149
145
  {"name": "Alice", "date": "January 10th", "object" : "dog"},
150
146
  {"name": "Bob", "date": "January 12th", "object" : "bag"},
151
- {"name": "Charlie", "date": "January 15th", "object" : "pen"}
147
+ {"name": "Charlie", "date": "January 15th", "object" : "pen"}
152
148
  ]
153
149
 
154
150
 
@@ -159,17 +155,20 @@ print(generated_prompts[0])
159
155
 
160
156
  ```
161
157
 
162
-
163
158
  ## Chunking Functions
159
+
164
160
  We have introduced new functions to help you split texts into manageable chunks based on different criteria. These functions are part of the chunker tool.
165
161
 
166
162
  ### chunk_by_max_chunk_size
163
+
167
164
  This function splits text into chunks with a maximum size, optionally preserving sentence structure.
168
165
 
169
166
  ### chunk_by_sentences
167
+
170
168
  This function splits the text into chunks based on sentences.
171
169
 
172
170
  ### chunk_by_paragraphs
171
+
173
172
  This function splits text into chunks based on paragraphs.
174
173
 
175
174
  Example
@@ -188,8 +187,8 @@ chunks = chunker.chunk_by_max_chunk_size(text, 100, True)
188
187
 
189
188
  ```
190
189
 
191
-
192
190
  ### Next Updates
191
+
193
192
  - Adding More Tools
194
193
  - Interacting With Local LLMs
195
194
  - Prompt Optimization
@@ -197,4 +196,4 @@ chunks = chunker.chunk_by_max_chunk_size(text, 100, True)
197
196
  - GPT Trainer
198
197
  - Document Chunker
199
198
  - Advanced Document Loader
200
- - Integration With More Providers
199
+ - Integration With More Providers
@@ -0,0 +1,251 @@
1
+ # import SimplerLLM.language.llm_providers.openai_llm as openai_llm
2
+ # import SimplerLLM.language.llm_providers.gemini_llm as gemini_llm
3
+ # import SimplerLLM.language.llm_providers.anthropic_llm as anthropic_llm
4
+ # from enum import Enum
5
+
6
+
7
+ # class EmbeddingsProvider(Enum):
8
+ # OPENAI = 1
9
+ # GEMINI = 2
10
+ # ANTHROPIC = 3
11
+
12
+
13
+ # class LLM:
14
+ # def __init__(
15
+ # self, provider=EmbeddingsProvider.OPENAI, model_name="text-embedding-3-small"
16
+ # ):
17
+ # self.provider = provider
18
+ # self.model_name = model_name
19
+
20
+ # @staticmethod
21
+ # def create(
22
+ # provider=None,
23
+ # model_name=None,
24
+ # ):
25
+ # if provider == EmbeddingsProvider.OPENAI:
26
+ # return OpenAILLM(provider, model_name)
27
+ # if provider == EmbeddingsProvider.GEMINI:
28
+ # return GeminiLLM(provider, model_name)
29
+ # if provider == EmbeddingsProvider.ANTHROPIC:
30
+ # return AnthropicLLM(provider, model_name)
31
+ # else:
32
+ # return None
33
+
34
+ # def set_model(self, provider):
35
+ # if not isinstance(provider, EmbeddingsProvider):
36
+ # raise ValueError("Provider must be an instance of EmbeddingsProvider Enum")
37
+ # self.provider = provider
38
+
39
+
40
+ # class OpenAILLM(LLM):
41
+ # def __init__(self, model, model_name):
42
+ # super().__init__(model, model_name)
43
+
44
+ # def generate_embeddings(
45
+ # self,
46
+ # user_input,
47
+ # model_name=None,
48
+ # ):
49
+ # # Use instance values as defaults if not provided
50
+ # model_name = model_name if model_name is not None else self.model_name
51
+ # temperature = temperature if temperature is not None else self.temperature
52
+ # top_p = top_p if top_p is not None else self.top_p
53
+
54
+ # return openai_llm.generate_text(
55
+ # user_input=user_input,
56
+ # model_name=model_name,
57
+ # )
58
+
59
+
60
+ # class GeminiLLM(LLM):
61
+ # def __init__(self, model, model_name, temperature, top_p):
62
+ # super().__init__(model, model_name, temperature, top_p)
63
+
64
+ # def generate_text(
65
+ # self,
66
+ # user_prompt,
67
+ # system_prompt=None,
68
+ # model_name=None,
69
+ # temperature=None,
70
+ # top_p=None,
71
+ # max_tokens=2024,
72
+ # ):
73
+ # # Use instance values as defaults if not provided
74
+ # model_name = model_name if model_name is not None else self.model_name
75
+ # temperature = temperature if temperature is not None else self.temperature
76
+ # top_p = top_p if top_p is not None else self.top_p
77
+
78
+ # return gemini_llm.generate_text(
79
+ # user_prompt=user_prompt,
80
+ # system_prompt=system_prompt,
81
+ # model_name=model_name,
82
+ # temperature=temperature,
83
+ # top_p=top_p,
84
+ # max_tokens=max_tokens,
85
+ # )
86
+
87
+ # def generate_full_response(
88
+ # self,
89
+ # user_prompt,
90
+ # system_prompt,
91
+ # model_name=None,
92
+ # temperature=None,
93
+ # top_p=None,
94
+ # max_tokens=2024,
95
+ # ):
96
+ # # Use instance values as defaults if not provided
97
+ # model_name = model_name if model_name is not None else self.model_name
98
+ # temperature = temperature if temperature is not None else self.temperature
99
+ # top_p = top_p if top_p is not None else self.top_p
100
+
101
+ # return gemini_llm.generate_full_response(
102
+ # user_prompt=user_prompt,
103
+ # system_prompt=system_prompt,
104
+ # model_name=model_name,
105
+ # temperature=temperature,
106
+ # top_p=top_p,
107
+ # max_tokens=max_tokens,
108
+ # )
109
+
110
+ # async def generate_text_async(
111
+ # self,
112
+ # user_prompt,
113
+ # system_prompt=None,
114
+ # model_name=None,
115
+ # temperature=None,
116
+ # top_p=None,
117
+ # max_tokens=2024,
118
+ # ):
119
+ # # Use instance values as defaults if not provided
120
+ # model_name = model_name if model_name is not None else self.model_name
121
+ # temperature = temperature if temperature is not None else self.temperature
122
+ # top_p = top_p if top_p is not None else self.top_p
123
+
124
+ # return await gemini_llm.generate_text_async(
125
+ # user_prompt=user_prompt,
126
+ # system_prompt=system_prompt,
127
+ # model_name=model_name,
128
+ # temperature=temperature,
129
+ # top_p=top_p,
130
+ # max_tokens=max_tokens,
131
+ # )
132
+
133
+ # async def generate_full_response_async(
134
+ # self,
135
+ # user_prompt,
136
+ # system_prompt,
137
+ # model_name=None,
138
+ # temperature=None,
139
+ # top_p=None,
140
+ # max_tokens=2024,
141
+ # ):
142
+ # # Use instance values as defaults if not provided
143
+ # model_name = model_name if model_name is not None else self.model_name
144
+ # temperature = temperature if temperature is not None else self.temperature
145
+ # top_p = top_p if top_p is not None else self.top_p
146
+
147
+ # return await gemini_llm.generate_full_response_async(
148
+ # user_prompt=user_prompt,
149
+ # system_prompt=system_prompt,
150
+ # model_name=model_name,
151
+ # temperature=temperature,
152
+ # top_p=top_p,
153
+ # max_tokens=max_tokens,
154
+ # )
155
+
156
+
157
+ # class AnthropicLLM(LLM):
158
+ # def __init__(self, model, model_name, temperature, top_p):
159
+ # super().__init__(model, model_name, temperature, top_p)
160
+
161
+ # def generate_text(
162
+ # self,
163
+ # user_prompt,
164
+ # system_prompt=None,
165
+ # model_name=None,
166
+ # temperature=None,
167
+ # top_p=None,
168
+ # max_tokens=2024,
169
+ # ):
170
+ # # Use instance values as defaults if not provided
171
+ # model_name = model_name if model_name is not None else self.model_name
172
+ # temperature = temperature if temperature is not None else self.temperature
173
+ # top_p = top_p if top_p is not None else self.top_p
174
+
175
+ # return anthropic_llm.generate_text(
176
+ # user_prompt=user_prompt,
177
+ # system_prompt=system_prompt,
178
+ # model_name=model_name,
179
+ # temperature=temperature,
180
+ # top_p=top_p,
181
+ # max_tokens=max_tokens,
182
+ # )
183
+
184
+ # def generate_full_response(
185
+ # self,
186
+ # user_prompt,
187
+ # system_prompt,
188
+ # model_name=None,
189
+ # temperature=None,
190
+ # top_p=None,
191
+ # max_tokens=2024,
192
+ # ):
193
+ # # Use instance values as defaults if not provided
194
+ # model_name = model_name if model_name is not None else self.model_name
195
+ # temperature = temperature if temperature is not None else self.temperature
196
+ # top_p = top_p if top_p is not None else self.top_p
197
+
198
+ # return anthropic_llm.generate_full_response(
199
+ # user_prompt=user_prompt,
200
+ # system_prompt=system_prompt,
201
+ # model_name=model_name,
202
+ # temperature=temperature,
203
+ # top_p=top_p,
204
+ # max_tokens=max_tokens,
205
+ # )
206
+
207
+ # async def generate_text_async(
208
+ # self,
209
+ # user_prompt,
210
+ # system_prompt=None,
211
+ # model_name=None,
212
+ # temperature=None,
213
+ # top_p=None,
214
+ # max_tokens=2024,
215
+ # ):
216
+ # # Use instance values as defaults if not provided
217
+ # model_name = model_name if model_name is not None else self.model_name
218
+ # temperature = temperature if temperature is not None else self.temperature
219
+ # top_p = top_p if top_p is not None else self.top_p
220
+
221
+ # return await anthropic_llm.generate_text_async(
222
+ # user_prompt=user_prompt,
223
+ # system_prompt=system_prompt,
224
+ # model_name=model_name,
225
+ # temperature=temperature,
226
+ # top_p=top_p,
227
+ # max_tokens=max_tokens,
228
+ # )
229
+
230
+ # async def generate_full_response_async(
231
+ # self,
232
+ # user_prompt,
233
+ # system_prompt,
234
+ # model_name=None,
235
+ # temperature=None,
236
+ # top_p=None,
237
+ # max_tokens=2024,
238
+ # ):
239
+ # # Use instance values as defaults if not provided
240
+ # model_name = model_name if model_name is not None else self.model_name
241
+ # temperature = temperature if temperature is not None else self.temperature
242
+ # top_p = top_p if top_p is not None else self.top_p
243
+
244
+ # return await anthropic_llm.generate_full_response_async(
245
+ # user_prompt=user_prompt,
246
+ # system_prompt=system_prompt,
247
+ # model_name=model_name,
248
+ # temperature=temperature,
249
+ # top_p=top_p,
250
+ # max_tokens=max_tokens,
251
+ # )
@@ -0,0 +1,206 @@
1
+ import SimplerLLM.language.llm_providers.openai_llm as openai_llm
2
+ import SimplerLLM.language.llm_providers.gemini_llm as gemini_llm
3
+ import SimplerLLM.language.llm_providers.anthropic_llm as anthropic_llm
4
+ from enum import Enum
5
+
6
+
7
+ class LLMProvider(Enum):
8
+ OPENAI = 1
9
+ GEMINI = 2
10
+ ANTHROPIC = 3
11
+
12
+
13
+ class LLM:
14
+ def __init__(
15
+ self,
16
+ provider=LLMProvider.OPENAI,
17
+ model_name="gpt-3.5-turbo",
18
+ temperature=0.7,
19
+ top_p=1.0,
20
+ ):
21
+ self.provider = provider
22
+ self.model_name = model_name
23
+ self.temperature = temperature
24
+ self.top_p = top_p
25
+
26
+ @staticmethod
27
+ def create(
28
+ provider=None,
29
+ model_name=None,
30
+ temperature=0.7,
31
+ top_p=1.0,
32
+ ):
33
+ if provider == LLMProvider.OPENAI:
34
+ return OpenAILLM(provider, model_name, temperature, top_p)
35
+ if provider == LLMProvider.GEMINI:
36
+ return GeminiLLM(provider, model_name, temperature, top_p)
37
+ if provider == LLMProvider.ANTHROPIC:
38
+ return AnthropicLLM(provider, model_name, temperature, top_p)
39
+ else:
40
+ return None
41
+
42
+ def set_model(self, provider):
43
+ if not isinstance(provider, LLMProvider):
44
+ raise ValueError("Provider must be an instance of LLMProvider Enum")
45
+ self.provider = provider
46
+
47
+ def prepare_params(self, model_name, temperature, top_p):
48
+ # Use instance values as defaults if parameters are not provided
49
+ return {
50
+ "model_name": model_name if model_name else self.model_name,
51
+ "temperature": temperature if temperature else self.temperature,
52
+ "top_p": top_p if top_p else self.top_p,
53
+ }
54
+
55
+
56
+ class OpenAILLM(LLM):
57
+ def __init__(self, model, model_name, temperature, top_p):
58
+ super().__init__(model, model_name, temperature, top_p)
59
+
60
+ def generate_response(
61
+ self,
62
+ model_name=None,
63
+ prompt=None,
64
+ messages=None,
65
+ system_prompt="You are a helpful AI Assistant",
66
+ temperature=0.7,
67
+ max_tokens=300,
68
+ top_p=1.0,
69
+ full_response=False,
70
+ ):
71
+ params = self.prepare_params(model_name, temperature, top_p)
72
+ params.update(
73
+ {
74
+ "prompt": prompt,
75
+ "messages": messages,
76
+ "system_prompt": system_prompt,
77
+ "max_tokens": max_tokens,
78
+ "full_response": full_response,
79
+ }
80
+ )
81
+ return openai_llm.generate_response(**params)
82
+
83
+ async def generate_response_async(
84
+ self,
85
+ model_name=None,
86
+ prompt=None,
87
+ messages=None,
88
+ system_prompt="You are a helpful AI Assistant",
89
+ temperature=0.7,
90
+ max_tokens=300,
91
+ top_p=1.0,
92
+ full_response=False,
93
+ ):
94
+ params = self.prepare_params(model_name, temperature, top_p)
95
+ params.update(
96
+ {
97
+ "prompt": prompt,
98
+ "messages": messages,
99
+ "system_prompt": system_prompt,
100
+ "max_tokens": max_tokens,
101
+ "full_response": full_response,
102
+ }
103
+ )
104
+ return await openai_llm.generate_response_async(**params)
105
+
106
+
107
+ class GeminiLLM(LLM):
108
+ def __init__(self, model, model_name, temperature, top_p):
109
+ super().__init__(model, model_name, temperature, top_p)
110
+
111
+ def generate_response(
112
+ self,
113
+ model_name=None,
114
+ prompt=None,
115
+ messages=None,
116
+ system_prompt="You are a helpful AI Assistant",
117
+ temperature=0.7,
118
+ max_tokens=300,
119
+ top_p=1.0,
120
+ full_response=False,
121
+ ):
122
+ params = self.prepare_params(model_name, temperature, top_p)
123
+ params.update(
124
+ {
125
+ "prompt": prompt,
126
+ "messages": messages,
127
+ "system_prompt": system_prompt,
128
+ "max_tokens": max_tokens,
129
+ "full_response": full_response,
130
+ }
131
+ )
132
+ return gemini_llm.generate_response(**params)
133
+
134
+ async def generate_response_async(
135
+ self,
136
+ model_name=None,
137
+ prompt=None,
138
+ messages=None,
139
+ system_prompt="You are a helpful AI Assistant",
140
+ temperature=0.7,
141
+ max_tokens=300,
142
+ top_p=1.0,
143
+ full_response=False,
144
+ ):
145
+ params = self.prepare_params(model_name, temperature, top_p)
146
+ params.update(
147
+ {
148
+ "prompt": prompt,
149
+ "messages": messages,
150
+ "system_prompt": system_prompt,
151
+ "max_tokens": max_tokens,
152
+ "full_response": full_response,
153
+ }
154
+ )
155
+ return await gemini_llm.generate_response_async(**params)
156
+
157
+
158
+ class AnthropicLLM(LLM):
159
+ def __init__(self, model, model_name, temperature, top_p):
160
+ super().__init__(model, model_name, temperature, top_p)
161
+
162
+ def generate_response(
163
+ self,
164
+ model_name=None,
165
+ prompt=None,
166
+ messages=None,
167
+ system_prompt="You are a helpful AI Assistant",
168
+ temperature=0.7,
169
+ max_tokens=300,
170
+ top_p=1.0,
171
+ full_response=False,
172
+ ):
173
+ params = self.prepare_params(model_name, temperature, top_p)
174
+ params.update(
175
+ {
176
+ "prompt": prompt,
177
+ "messages": messages,
178
+ "system_prompt": system_prompt,
179
+ "max_tokens": max_tokens,
180
+ "full_response": full_response,
181
+ }
182
+ )
183
+ return anthropic_llm.generate_response(**params)
184
+
185
+ async def generate_response_async(
186
+ self,
187
+ model_name=None,
188
+ prompt=None,
189
+ messages=None,
190
+ system_prompt="You are a helpful AI Assistant",
191
+ temperature=0.7,
192
+ max_tokens=300,
193
+ top_p=1.0,
194
+ full_response=False,
195
+ ):
196
+ params = self.prepare_params(model_name, temperature, top_p)
197
+ params.update(
198
+ {
199
+ "prompt": prompt,
200
+ "messages": messages,
201
+ "system_prompt": system_prompt,
202
+ "max_tokens": max_tokens,
203
+ "full_response": full_response,
204
+ }
205
+ )
206
+ return await anthropic_llm.generate_response_async(**params)