python-fastllm 0.0.4__tar.gz → 0.0.6__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 (27) hide show
  1. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/PKG-INFO +1 -1
  2. python_fastllm-0.0.6/fastllm/__init__.py +1 -0
  3. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/acomplete.py +2 -2
  4. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/chat.py +1 -1
  5. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/types.py +5 -2
  6. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/python_fastllm.egg-info/PKG-INFO +1 -1
  7. python_fastllm-0.0.4/fastllm/__init__.py +0 -1
  8. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/README.md +0 -0
  9. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/_modidx.py +0 -0
  10. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/anthropic.py +0 -0
  11. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/gemini.py +0 -0
  12. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/openai_chat.py +0 -0
  13. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/openai_responses.py +0 -0
  14. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/specs/anthropic.json +0 -0
  15. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/specs/anthropic.yml +0 -0
  16. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/specs/gemini.json +0 -0
  17. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/specs/openai.with-code-samples.json +0 -0
  18. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/specs/openai.with-code-samples.yml +0 -0
  19. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/specs/spec_manifest.json +0 -0
  20. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/fastllm/streaming.py +0 -0
  21. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/pyproject.toml +0 -0
  22. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/python_fastllm.egg-info/SOURCES.txt +0 -0
  23. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/python_fastllm.egg-info/dependency_links.txt +0 -0
  24. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/python_fastllm.egg-info/entry_points.txt +0 -0
  25. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/python_fastllm.egg-info/requires.txt +0 -0
  26. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/python_fastllm.egg-info/top_level.txt +0 -0
  27. {python_fastllm-0.0.4 → python_fastllm-0.0.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-fastllm
3
- Version: 0.0.4
3
+ Version: 0.0.6
4
4
  Author-email: Kerem Turgutlu <keremturgutlu@gmail.com>
5
5
  License: Apache-2.0
6
6
  Project-URL: Repository, https://github.com/AnswerDotAI/fastllm
@@ -0,0 +1 @@
1
+ __version__ = "0.0.6"
@@ -49,7 +49,7 @@ api2spec = {'openai':oai_spec, 'openai_chat':oai_spec, 'anthropic':ant_spec, 'ge
49
49
 
50
50
  # %% ../nbs/06_acomplete.ipynb #79075d95
51
51
  @flexicache()
52
- def mk_client(model, vendor_name=None, api_name=None, api_key=None, base_url=None, xtra_hdrs=None):
52
+ def mk_client(model=None, vendor_name=None, api_name=None, api_key=None, base_url=None, xtra_hdrs=None):
53
53
  err_msg = f"please pass a valid one vendor: {', '.join(list(vendor_mapping))} or pass `api_name`,`base_url` and `api_key`"
54
54
  if vendor_name:
55
55
  override_base_url = base_url
@@ -62,7 +62,7 @@ def mk_client(model, vendor_name=None, api_name=None, api_key=None, base_url=Non
62
62
  if auth_fn.exists(): api_key = nested_idx(json.loads(auth_fn.read_text()), *keys)
63
63
  api_key = get_api_key(api_key, env_api_nm)
64
64
  except KeyError: raise ValueError(f"Unknown vendor '{vendor_name}', {err_msg}")
65
- elif api_name and base_url and api_key: vendor_name = ifnone(vendor_name, 'custom')
65
+ elif base_url and api_key: vendor_name, api_name = ifnone(vendor_name, 'custom'), ifnone(api_name, 'openai_chat')
66
66
  elif (api_name:=infer_api_name(model)): base_url, vendor_name = None, api_name
67
67
  else: raise ValueError(f"Model {model} can't be auto resolved, {err_msg}")
68
68
  api = api_registry.apis[api_name]
@@ -476,7 +476,7 @@ def _think_kw(model, think, vendor_name):
476
476
  def _prep_call(self:AsyncChat, prefill, search, max_tokens, kwargs, stream=False, think=None):
477
477
  "Prepare model info, prefill, search, and provider kwargs for a completion call"
478
478
  model_info = get_model_info(self.model, self.vendor_name)
479
- if max_tokens is None: max_tokens = model_info.get('max_output_tokens')
479
+ if max_tokens is None: max_tokens = ifnone(model_info.get('max_output_tokens'), 32_000)
480
480
  if not model_info.get("supports_assistant_prefill"): prefill = None
481
481
  if _has_search(model_info) and (s:=ifnone(search,self.search)):
482
482
  if 'web_search_options' not in kwargs: kwargs['web_search_options'] = {}
@@ -240,7 +240,7 @@ def infer_api_name(model):
240
240
  def get_model_meta(model, vendor_name=None, tfm=noop):
241
241
  "Look up cost metadata for `model` from litellm price map, using `vendor_name` prefix if needed."
242
242
  vendor_name = ifnone(vendor_name, infer_api_name(model))
243
- mp = model_prices_meta()
243
+ mp, key = model_prices_meta(), ''
244
244
  if model in mp: key = model
245
245
  elif vendor_name=='gemini' and model.startswith('models/'): key = f"gemini/{model.removeprefix('models/')}"
246
246
  elif vendor_name: key = f"{vendor_name}/{model}"
@@ -273,7 +273,7 @@ _codex_overrides = {
273
273
  }
274
274
 
275
275
  # %% ../nbs/00_types.ipynb #fbfdeb0a
276
- def get_model_info(mn, vendor_name=None):
276
+ def get_model_info(mn, vendor_name=None, strict=False):
277
277
  info = get_model_meta(mn, 'chatgpt' if vendor_name=='codex' else vendor_name)
278
278
  # anthropic web search
279
279
  if 'search_context_cost_per_query' in info: info['supports_web_search'] = True
@@ -306,6 +306,9 @@ def get_model_info(mn, vendor_name=None):
306
306
  supports_prompt_caching=True, supports_native_streaming=True, supports_native_structured_output=True,
307
307
  max_tokens=1000000, max_input_tokens=1000000, max_output_tokens=65536,
308
308
  input_cost_per_token=0.5e-6, cache_read_input_token_cost=0.1e-6, output_cost_per_token=3.0e-6)
309
+
310
+ # unresolved models
311
+ if not info and not strict: info = info | codex_pricing
309
312
  return dict2obj(info)
310
313
 
311
314
  # %% ../nbs/00_types.ipynb #8bfca02d
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-fastllm
3
- Version: 0.0.4
3
+ Version: 0.0.6
4
4
  Author-email: Kerem Turgutlu <keremturgutlu@gmail.com>
5
5
  License: Apache-2.0
6
6
  Project-URL: Repository, https://github.com/AnswerDotAI/fastllm
@@ -1 +0,0 @@
1
- __version__ = "0.0.4"
File without changes
File without changes