未验证 提交 ae3f1ac0 编写于 作者: T takatost 提交者: GitHub

feat: support gpt-3.5-turbo-instruct model (#1195)

上级 269a465f
...@@ -16,7 +16,7 @@ model_templates = { ...@@ -16,7 +16,7 @@ model_templates = {
}, },
'model_config': { 'model_config': {
'provider': 'openai', 'provider': 'openai',
'model_id': 'text-davinci-003', 'model_id': 'gpt-3.5-turbo-instruct',
'configs': { 'configs': {
'prompt_template': '', 'prompt_template': '',
'prompt_variables': [], 'prompt_variables': [],
...@@ -30,7 +30,7 @@ model_templates = { ...@@ -30,7 +30,7 @@ model_templates = {
}, },
'model': json.dumps({ 'model': json.dumps({
"provider": "openai", "provider": "openai",
"name": "text-davinci-003", "name": "gpt-3.5-turbo-instruct",
"completion_params": { "completion_params": {
"max_tokens": 512, "max_tokens": 512,
"temperature": 1, "temperature": 1,
...@@ -104,7 +104,7 @@ demo_model_templates = { ...@@ -104,7 +104,7 @@ demo_model_templates = {
'mode': 'completion', 'mode': 'completion',
'model_config': AppModelConfig( 'model_config': AppModelConfig(
provider='openai', provider='openai',
model_id='text-davinci-003', model_id='gpt-3.5-turbo-instruct',
configs={ configs={
'prompt_template': "Please translate the following text into {{target_language}}:\n", 'prompt_template': "Please translate the following text into {{target_language}}:\n",
'prompt_variables': [ 'prompt_variables': [
...@@ -140,7 +140,7 @@ demo_model_templates = { ...@@ -140,7 +140,7 @@ demo_model_templates = {
pre_prompt="Please translate the following text into {{target_language}}:\n", pre_prompt="Please translate the following text into {{target_language}}:\n",
model=json.dumps({ model=json.dumps({
"provider": "openai", "provider": "openai",
"name": "text-davinci-003", "name": "gpt-3.5-turbo-instruct",
"completion_params": { "completion_params": {
"max_tokens": 1000, "max_tokens": 1000,
"temperature": 0, "temperature": 0,
...@@ -222,7 +222,7 @@ demo_model_templates = { ...@@ -222,7 +222,7 @@ demo_model_templates = {
'mode': 'completion', 'mode': 'completion',
'model_config': AppModelConfig( 'model_config': AppModelConfig(
provider='openai', provider='openai',
model_id='text-davinci-003', model_id='gpt-3.5-turbo-instruct',
configs={ configs={
'prompt_template': "请将以下文本翻译为{{target_language}}:\n", 'prompt_template': "请将以下文本翻译为{{target_language}}:\n",
'prompt_variables': [ 'prompt_variables': [
...@@ -258,7 +258,7 @@ demo_model_templates = { ...@@ -258,7 +258,7 @@ demo_model_templates = {
pre_prompt="请将以下文本翻译为{{target_language}}:\n", pre_prompt="请将以下文本翻译为{{target_language}}:\n",
model=json.dumps({ model=json.dumps({
"provider": "openai", "provider": "openai",
"name": "text-davinci-003", "name": "gpt-3.5-turbo-instruct",
"completion_params": { "completion_params": {
"max_tokens": 1000, "max_tokens": 1000,
"temperature": 0, "temperature": 0,
......
...@@ -17,6 +17,7 @@ from core.model_providers.models.entity.model_params import ModelMode, ModelKwar ...@@ -17,6 +17,7 @@ from core.model_providers.models.entity.model_params import ModelMode, ModelKwar
from models.provider import ProviderType, ProviderQuotaType from models.provider import ProviderType, ProviderQuotaType
COMPLETION_MODELS = [ COMPLETION_MODELS = [
'gpt-3.5-turbo-instruct', # 4,096 tokens
'text-davinci-003', # 4,097 tokens 'text-davinci-003', # 4,097 tokens
] ]
...@@ -31,6 +32,7 @@ MODEL_MAX_TOKENS = { ...@@ -31,6 +32,7 @@ MODEL_MAX_TOKENS = {
'gpt-4': 8192, 'gpt-4': 8192,
'gpt-4-32k': 32768, 'gpt-4-32k': 32768,
'gpt-3.5-turbo': 4096, 'gpt-3.5-turbo': 4096,
'gpt-3.5-turbo-instruct': 4096,
'gpt-3.5-turbo-16k': 16384, 'gpt-3.5-turbo-16k': 16384,
'text-davinci-003': 4097, 'text-davinci-003': 4097,
} }
......
...@@ -40,6 +40,10 @@ class OpenAIProvider(BaseModelProvider): ...@@ -40,6 +40,10 @@ class OpenAIProvider(BaseModelProvider):
ModelFeature.AGENT_THOUGHT.value ModelFeature.AGENT_THOUGHT.value
] ]
}, },
{
'id': 'gpt-3.5-turbo-instruct',
'name': 'GPT-3.5-Turbo-Instruct',
},
{ {
'id': 'gpt-3.5-turbo-16k', 'id': 'gpt-3.5-turbo-16k',
'name': 'gpt-3.5-turbo-16k', 'name': 'gpt-3.5-turbo-16k',
...@@ -128,6 +132,7 @@ class OpenAIProvider(BaseModelProvider): ...@@ -128,6 +132,7 @@ class OpenAIProvider(BaseModelProvider):
'gpt-4': 8192, 'gpt-4': 8192,
'gpt-4-32k': 32768, 'gpt-4-32k': 32768,
'gpt-3.5-turbo': 4096, 'gpt-3.5-turbo': 4096,
'gpt-3.5-turbo-instruct': 4096,
'gpt-3.5-turbo-16k': 16384, 'gpt-3.5-turbo-16k': 16384,
'text-davinci-003': 4097, 'text-davinci-003': 4097,
} }
......
...@@ -30,6 +30,12 @@ ...@@ -30,6 +30,12 @@
"unit": "0.001", "unit": "0.001",
"currency": "USD" "currency": "USD"
}, },
"gpt-3.5-turbo-instruct": {
"prompt": "0.0015",
"completion": "0.002",
"unit": "0.001",
"currency": "USD"
},
"gpt-3.5-turbo-16k": { "gpt-3.5-turbo-16k": {
"prompt": "0.003", "prompt": "0.003",
"completion": "0.004", "completion": "0.004",
......
...@@ -14,6 +14,9 @@ class EnhanceOpenAI(OpenAI): ...@@ -14,6 +14,9 @@ class EnhanceOpenAI(OpenAI):
max_retries: int = 1 max_retries: int = 1
"""Maximum number of retries to make when generating.""" """Maximum number of retries to make when generating."""
def __new__(cls, **data: Any): # type: ignore
return super(EnhanceOpenAI, cls).__new__(cls)
@root_validator() @root_validator()
def validate_environment(cls, values: Dict) -> Dict: def validate_environment(cls, values: Dict) -> Dict:
"""Validate that api key and python package exists in environment.""" """Validate that api key and python package exists in environment."""
......
...@@ -11,7 +11,7 @@ flask-cors==3.0.10 ...@@ -11,7 +11,7 @@ flask-cors==3.0.10
gunicorn~=21.2.0 gunicorn~=21.2.0
gevent~=22.10.2 gevent~=22.10.2
langchain==0.0.250 langchain==0.0.250
openai~=0.27.8 openai~=0.28.0
psycopg2-binary~=2.9.6 psycopg2-binary~=2.9.6
pycryptodome==3.17 pycryptodome==3.17
python-dotenv==1.0.0 python-dotenv==1.0.0
......
...@@ -42,7 +42,7 @@ def decrypt_side_effect(tenant_id, encrypted_openai_api_key): ...@@ -42,7 +42,7 @@ def decrypt_side_effect(tenant_id, encrypted_openai_api_key):
@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) @patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect)
def test_get_num_tokens(mock_decrypt): def test_get_num_tokens(mock_decrypt):
openai_model = get_mock_openai_model('text-davinci-003') openai_model = get_mock_openai_model('gpt-3.5-turbo-instruct')
rst = openai_model.get_num_tokens([PromptMessage(content='you are a kindness Assistant.')]) rst = openai_model.get_num_tokens([PromptMessage(content='you are a kindness Assistant.')])
assert rst == 6 assert rst == 6
...@@ -61,7 +61,7 @@ def test_chat_get_num_tokens(mock_decrypt): ...@@ -61,7 +61,7 @@ def test_chat_get_num_tokens(mock_decrypt):
def test_run(mock_decrypt, mocker): def test_run(mock_decrypt, mocker):
mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None)
openai_model = get_mock_openai_model('text-davinci-003') openai_model = get_mock_openai_model('gpt-3.5-turbo-instruct')
rst = openai_model.run( rst = openai_model.run(
[PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')], [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')],
stop=['\nHuman:'], stop=['\nHuman:'],
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册