Skip to content

Commit

Permalink
Add gpt-4o and update OpenAiStructureConfig default prompt_driver (#780)
Browse files Browse the repository at this point in the history
  • Loading branch information
zachgiordano authored May 14, 2024
1 parent 307ac2b commit c39ad53
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 7 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

### Changed
- Default behavior of OpenAiStructureConfig to utilize `gpt-4o` for prompt_driver.

## [0.25.1] - 2024-05-09
### Added
- Optional event batching on Event Listener Drivers.
Expand Down
2 changes: 1 addition & 1 deletion griptape/config/openai_structure_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class OpenAiStructureConfig(BaseStructureConfig):
global_drivers: StructureGlobalDriversConfig = field(
default=Factory(
lambda: StructureGlobalDriversConfig(
prompt_driver=OpenAiChatPromptDriver(model="gpt-4"),
prompt_driver=OpenAiChatPromptDriver(model="gpt-4o"),
image_generation_driver=OpenAiImageGenerationDriver(model="dall-e-2", image_size="512x512"),
image_query_driver=OpenAiVisionImageQueryDriver(model="gpt-4-vision-preview"),
embedding_driver=OpenAiEmbeddingDriver(model="text-embedding-3-small"),
Expand Down
7 changes: 6 additions & 1 deletion griptape/tokenizers/openai_tokenizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@
class OpenAiTokenizer(BaseTokenizer):
DEFAULT_OPENAI_GPT_3_COMPLETION_MODEL = "gpt-3.5-turbo-instruct"
DEFAULT_OPENAI_GPT_3_CHAT_MODEL = "gpt-3.5-turbo"
DEFAULT_OPENAI_GPT_4_MODEL = "gpt-4"
DEFAULT_OPENAI_GPT_4_MODEL = "gpt-4o"
DEFAULT_ENCODING = "cl100k_base"
DEFAULT_MAX_TOKENS = 2049
DEFAULT_MAX_OUTPUT_TOKENS = 4096
TOKEN_OFFSET = 8

# https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo
MODEL_PREFIXES_TO_MAX_INPUT_TOKENS = {
"gpt-4o": 128000,
"gpt-4-1106": 128000,
"gpt-4-32k": 32768,
"gpt-4": 8192,
Expand Down Expand Up @@ -85,6 +86,7 @@ def count_tokens(self, text: str | list[dict], model: Optional[str] = None) -> i
"gpt-4-32k-0314",
"gpt-4-0613",
"gpt-4-32k-0613",
"gpt-4o-2024-05-13",
}:
tokens_per_message = 3
tokens_per_name = 1
Expand All @@ -96,6 +98,9 @@ def count_tokens(self, text: str | list[dict], model: Optional[str] = None) -> i
elif "gpt-3.5-turbo" in model or "gpt-35-turbo" in model:
logging.info("gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.")
return self.count_tokens(text, model="gpt-3.5-turbo-0613")
elif "gpt-4o" in model:
logging.info("gpt-4o may update over time. Returning num tokens assuming gpt-4o-2024-05-13.")
return self.count_tokens(text, model="gpt-4o-2024-05-13")
elif "gpt-4" in model:
logging.info("gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.")
return self.count_tokens(text, model="gpt-4-0613")
Expand Down
10 changes: 5 additions & 5 deletions tests/unit/config/test_openai_structure_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def test_to_dict(self, config):
"prompt_driver": {
"type": "OpenAiChatPromptDriver",
"base_url": None,
"model": "gpt-4",
"model": "gpt-4o",
"organization": None,
"response_format": None,
"seed": None,
Expand Down Expand Up @@ -72,7 +72,7 @@ def test_to_dict(self, config):
"prompt_driver": {
"base_url": None,
"type": "OpenAiChatPromptDriver",
"model": "gpt-4",
"model": "gpt-4o",
"organization": None,
"response_format": None,
"seed": None,
Expand All @@ -98,7 +98,7 @@ def test_to_dict(self, config):
"prompt_driver": {
"type": "OpenAiChatPromptDriver",
"base_url": None,
"model": "gpt-4",
"model": "gpt-4o",
"organization": None,
"response_format": None,
"seed": None,
Expand All @@ -113,7 +113,7 @@ def test_to_dict(self, config):
"prompt_driver": {
"type": "OpenAiChatPromptDriver",
"base_url": None,
"model": "gpt-4",
"model": "gpt-4o",
"organization": None,
"response_format": None,
"seed": None,
Expand All @@ -129,7 +129,7 @@ def test_to_dict(self, config):
"prompt_driver": {
"type": "OpenAiChatPromptDriver",
"base_url": None,
"model": "gpt-4",
"model": "gpt-4o",
"organization": None,
"response_format": None,
"seed": None,
Expand Down

0 comments on commit c39ad53

Please sign in to comment.