SimplerLLM 0.1.9__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.9 → SimplerLLM-0.2.0}/PKG-INFO +19 -19
  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/openai_llm.py +199 -0
  7. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/tools/json_helpers.py +44 -8
  8. SimplerLLM-0.2.0/SimplerLLM/tools/text_chunker.py +228 -0
  9. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/PKG-INFO +19 -19
  10. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/SOURCES.txt +1 -0
  11. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/requires.txt +1 -0
  12. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/setup.py +1 -1
  13. SimplerLLM-0.1.9/SimplerLLM/language/llm.py +0 -336
  14. SimplerLLM-0.1.9/SimplerLLM/language/llm_providers/anthropic_llm.py +0 -324
  15. SimplerLLM-0.1.9/SimplerLLM/language/llm_providers/gemini_llm.py +0 -369
  16. SimplerLLM-0.1.9/SimplerLLM/language/llm_providers/openai_llm.py +0 -198
  17. SimplerLLM-0.1.9/SimplerLLM/tools/text_chunker.py +0 -106
  18. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/__init__.py +0 -0
  19. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/image/__init__.py +0 -0
  20. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/image/img_helper_funcs.py +0 -0
  21. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/image/stability_ai.py +0 -0
  22. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/language/__init__.py +0 -0
  23. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/language/llm_addons.py +0 -0
  24. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/language/llm_providers/__init__.py +0 -0
  25. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/language/llm_providers/llm_response_models.py +0 -0
  26. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/prompts/__init__.py +0 -0
  27. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/prompts/prompt_builder.py +0 -0
  28. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/tools/__init__.py +0 -0
  29. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/tools/file_loader.py +0 -0
  30. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/tools/generic_loader.py +0 -0
  31. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/tools/rapid_api.py +0 -0
  32. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM/tools/serp.py +0 -0
  33. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/dependency_links.txt +0 -0
  34. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/SimplerLLM.egg-info/top_level.txt +0 -0
  35. {SimplerLLM-0.1.9 → SimplerLLM-0.2.0}/my_tests/__init__.py +0 -0
  36. {SimplerLLM-0.1.9 → 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.9
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,16 +65,13 @@ 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")
@@ -83,14 +79,14 @@ llm_instance = LLM.create(provider=LLMProvider.OPENAI)
83
79
  # For Anthropic Claude
84
80
  #llm_instance = LLM.create(LLMProvider.ANTHROPIC, model_name="claude-3-opus-20240229")
85
81
 
86
-
87
- response = llm_instance.generate_text(user_prompt="generate a 5 words sentence")
82
+ response = llm_instance.generate_response(prompt="generate a 5 words sentence")
88
83
 
89
84
  ```
90
85
 
91
86
  ### Using Tools
92
87
 
93
88
  #### SERP
89
+
94
90
  ```python
95
91
  from SimplerLLM.tools.serp import search_with_serper_api
96
92
 
@@ -101,6 +97,7 @@ search_results = search_with_serper_api("your search query", num_results=3)
101
97
  ```
102
98
 
103
99
  #### Generic Text Loader
100
+
104
101
  ```python
105
102
  from SimplerLLM.tools.generic_loader import load_content
106
103
 
@@ -111,6 +108,7 @@ print(text_file.content)
111
108
  ```
112
109
 
113
110
  #### Calling any RapidAPI API
111
+
114
112
  ```python
115
113
  from SimplerLLM.tools.rapid_api import RapidAPIClient
116
114
 
@@ -125,7 +123,6 @@ response = api_client.call_api(api_url, method='GET', params=api_params)
125
123
 
126
124
  ```
127
125
 
128
-
129
126
  #### Prompt Template Builder
130
127
 
131
128
  ```python
@@ -147,7 +144,7 @@ multi_value_prompt_template = """Hello {name}, your next meeting is on {date}.
147
144
  params_list = [
148
145
  {"name": "Alice", "date": "January 10th", "object" : "dog"},
149
146
  {"name": "Bob", "date": "January 12th", "object" : "bag"},
150
- {"name": "Charlie", "date": "January 15th", "object" : "pen"}
147
+ {"name": "Charlie", "date": "January 15th", "object" : "pen"}
151
148
  ]
152
149
 
153
150
 
@@ -158,17 +155,20 @@ print(generated_prompts[0])
158
155
 
159
156
  ```
160
157
 
161
-
162
158
  ## Chunking Functions
159
+
163
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.
164
161
 
165
162
  ### chunk_by_max_chunk_size
163
+
166
164
  This function splits text into chunks with a maximum size, optionally preserving sentence structure.
167
165
 
168
166
  ### chunk_by_sentences
167
+
169
168
  This function splits the text into chunks based on sentences.
170
169
 
171
170
  ### chunk_by_paragraphs
171
+
172
172
  This function splits text into chunks based on paragraphs.
173
173
 
174
174
  Example
@@ -187,8 +187,8 @@ chunks = chunker.chunk_by_max_chunk_size(text, 100, True)
187
187
 
188
188
  ```
189
189
 
190
-
191
190
  ### Next Updates
191
+
192
192
  - Adding More Tools
193
193
  - Interacting With Local LLMs
194
194
  - Prompt Optimization
@@ -196,4 +196,4 @@ chunks = chunker.chunk_by_max_chunk_size(text, 100, True)
196
196
  - GPT Trainer
197
197
  - Document Chunker
198
198
  - Advanced Document Loader
199
- - 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)