Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Dify.AI
Dify
提交
ae3f1ac0
Dify
项目概览
Dify.AI
/
Dify
8 个月 前同步成功
通知
12
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Dify
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
ae3f1ac0
编写于
9月 19, 2023
作者:
T
takatost
提交者:
GitHub
9月 19, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: support gpt-3.5-turbo-instruct model (#1195)
上级
269a465f
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
25 addition
and
9 deletion
+25
-9
api/constants/model_template.py
api/constants/model_template.py
+6
-6
api/core/model_providers/models/llm/openai_model.py
api/core/model_providers/models/llm/openai_model.py
+2
-0
api/core/model_providers/providers/openai_provider.py
api/core/model_providers/providers/openai_provider.py
+5
-0
api/core/model_providers/rules/openai.json
api/core/model_providers/rules/openai.json
+6
-0
api/core/third_party/langchain/llms/open_ai.py
api/core/third_party/langchain/llms/open_ai.py
+3
-0
api/requirements.txt
api/requirements.txt
+1
-1
api/tests/integration_tests/models/llm/test_openai_model.py
api/tests/integration_tests/models/llm/test_openai_model.py
+2
-2
未找到文件。
api/constants/model_template.py
浏览文件 @
ae3f1ac0
...
@@ -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
,
...
...
api/core/model_providers/models/llm/openai_model.py
浏览文件 @
ae3f1ac0
...
@@ -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
,
}
}
...
...
api/core/model_providers/providers/openai_provider.py
浏览文件 @
ae3f1ac0
...
@@ -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
,
}
}
...
...
api/core/model_providers/rules/openai.json
浏览文件 @
ae3f1ac0
...
@@ -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"
,
...
...
api/core/third_party/langchain/llms/open_ai.py
浏览文件 @
ae3f1ac0
...
@@ -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."""
...
...
api/requirements.txt
浏览文件 @
ae3f1ac0
...
@@ -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.2
7.8
openai~=0.2
8.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
...
...
api/tests/integration_tests/models/llm/test_openai_model.py
浏览文件 @
ae3f1ac0
...
@@ -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`?
\n
Assistant: '
)],
[
PromptMessage
(
content
=
'Human: Are you Human? you MUST only answer `y` or `n`?
\n
Assistant: '
)],
stop
=
[
'
\n
Human:'
],
stop
=
[
'
\n
Human:'
],
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录