cat-llm 0.0.79__tar.gz → 0.0.81__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cat-llm
3
- Version: 0.0.79
3
+ Version: 0.0.81
4
4
  Summary: A tool for categorizing text data and images using LLMs and vision models
5
5
  Project-URL: Documentation, https://github.com/chrissoria/cat-llm#readme
6
6
  Project-URL: Issues, https://github.com/chrissoria/cat-llm/issues
@@ -1,7 +1,7 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Christopher Soria <chrissoria@berkeley.edu>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "0.0.79"
4
+ __version__ = "0.0.81"
5
5
  __author__ = "Chris Soria"
6
6
  __email__ = "chrissoria@berkeley.edu"
7
7
  __title__ = "cat-llm"
@@ -8,7 +8,7 @@ from .calls.all_calls import (
8
8
  chain_of_verification_anthropic,
9
9
  chain_of_verification_mistral,
10
10
  get_openai_top_n,
11
- get_anthropic_top_n,
11
+ get_anthropic_top_n
12
12
  )
13
13
 
14
14
 
@@ -114,7 +114,6 @@ Number your categories from 1 through {cat_num} and be concise with the category
114
114
 
115
115
  return df
116
116
 
117
- #extract top categories from corpus
118
117
  #extract top categories from corpus
119
118
  def explore_common_categories(
120
119
  survey_question,
@@ -168,15 +167,28 @@ Number your categories from 1 through {cat_num} and be concise with the category
168
167
 
169
168
  if model_source == "openai":
170
169
  try:
171
- reply = get_openai_top_n(
172
- prompt=prompt,
173
- user_model=user_model,
174
- specificity=specificity,
175
- api_key=api_key,
176
- model_source=model_source,
177
- research_question=research_question,
178
- creativity=creativity
170
+ from openai import OpenAI
171
+
172
+ base_url = (
173
+ "https://api.perplexity.ai" if model_source == "perplexity"
174
+ else "https://router.huggingface.co/v1" if model_source == "huggingface"
175
+ else None
176
+ )
177
+
178
+ client = OpenAI(api_key=api_key, base_url=base_url)
179
+
180
+ response_obj = client.chat.completions.create(
181
+ model=user_model,
182
+ messages=[
183
+ {'role': 'system', 'content': f"""You are a helpful assistant that extracts categories from survey responses. \
184
+ The specific task is to identify {specificity} categories of responses to a survey question. \
185
+ The research question is: {research_question}""" if research_question else "You are a helpful assistant."},
186
+ {'role': 'user', 'content': prompt}
187
+ ],
188
+ **({"temperature": creativity} if creativity is not None else {})
179
189
  )
190
+
191
+ reply = response_obj.choices[0].message.content
180
192
 
181
193
  responses.append(reply)
182
194
 
@@ -192,16 +204,29 @@ Number your categories from 1 through {cat_num} and be concise with the category
192
204
 
193
205
  elif model_source == "anthropic":
194
206
 
195
- reply = get_anthropic_top_n(
196
- prompt=prompt,
197
- user_model=user_model,
198
- specificity=specificity,
199
- model_source=model_source,
200
- api_key=api_key,
201
- research_question=research_question,
202
- creativity=creativity
207
+ import anthropic
208
+ client = anthropic.Anthropic(api_key=api_key)
209
+
210
+ # Build system prompt
211
+ if research_question:
212
+ system_content = (f"You are a helpful assistant that extracts categories from survey responses. "
213
+ f"The specific task is to identify {specificity} categories of responses to a survey question. "
214
+ f"The research question is: {research_question}")
215
+ else:
216
+ system_content = "You are a helpful assistant."
217
+
218
+ response_obj = client.messages.create(
219
+ model=user_model,
220
+ max_tokens=4096,
221
+ system=system_content,
222
+ messages=[
223
+ {'role': 'user', 'content': prompt}
224
+ ],
225
+ **({"temperature": creativity} if creativity is not None else {})
203
226
  )
204
227
 
228
+ reply = response_obj.content[0].text
229
+
205
230
  responses.append(reply)
206
231
  else:
207
232
  raise ValueError(f"Unsupported model_source: {model_source}")
File without changes
File without changes
File without changes
File without changes