Merge branch 'main' of github.com:infiniflow/ragflow into feature/1121

# Conflicts:
#	web/src/pages/user-setting/data-source/index.tsx
This commit is contained in:
chanx 2025-11-25 18:54:53 +08:00
commit 98332b5bd1
7 changed files with 3407 additions and 3381 deletions

View file

@ -90,7 +90,7 @@ class BlobStorageConnector(LoadConnector, PollConnector):
elif self.bucket_type == BlobType.S3_COMPATIBLE:
if not all(
credentials.get(key)
for key in ["endpoint_url", "aws_access_key_id", "aws_secret_access_key"]
for key in ["endpoint_url", "aws_access_key_id", "aws_secret_access_key", "addressing_style"]
):
raise ConnectorMissingCredentialError("S3 Compatible Storage")

View file

@ -312,12 +312,15 @@ def create_s3_client(bucket_type: BlobType, credentials: dict[str, Any], europea
region_name=credentials["region"],
)
elif bucket_type == BlobType.S3_COMPATIBLE:
addressing_style = credentials.get("addressing_style", "virtual")
return boto3.client(
"s3",
endpoint_url=credentials["endpoint_url"],
aws_access_key_id=credentials["aws_access_key_id"],
aws_secret_access_key=credentials["aws_secret_access_key"],
)
config=Config(s3={'addressing_style': addressing_style}),
)
else:
raise ValueError(f"Unsupported bucket type: {bucket_type}")

View file

@ -283,6 +283,8 @@ class QWenCV(GptV4):
model=self.model_name,
messages=messages,
)
if response.get("message"):
raise Exception(response["message"])
summary = response["output"]["choices"][0]["message"].content[0]["text"]
return summary, num_tokens_from_string(summary)

6759
uv.lock generated

File diff suppressed because it is too large Load diff

View file

@ -715,6 +715,8 @@ This auto-tagging feature enhances retrieval by adding another layer of domain-s
Example: general/v2/`,
S3CompatibleEndpointUrlTip: `Required for S3 compatible Storage Box. Specify the S3-compatible endpoint URL.
Example: https://fsn1.your-objectstorage.com`,
S3CompatibleAddressingStyleTip: `Required for S3 compatible Storage Box. Specify the S3-compatible addressing style.
Example: Virtual Hosted Style`,
addDataSourceModalTital: 'Create your {{name}} connector',
deleteSourceModalTitle: 'Delete data source',
deleteSourceModalContent: `

View file

@ -715,6 +715,8 @@ export default {
Пример: general/v2/`,
S3CompatibleEndpointUrlTip: `Требуется для S3 совместимого Storage Box. Укажите URL конечной точки, совместимой с S3.
Пример: https://fsn1.your-objectstorage.com`,
S3CompatibleAddressingStyleTip: `Требуется для S3 совместимого Storage Box. Укажите стиль адресации, совместимый с S3.
Пример: Virtual Hosted Style`,
addDataSourceModalTital: 'Создайте ваш коннектор {{name}}',
deleteSourceModalTitle: 'Удалить источник данных',
deleteSourceModalContent: `

View file

@ -121,6 +121,21 @@ export const DataSourceFormFields = {
],
required: true,
},
{
label: 'Addressing Style',
name: 'config.credentials.addressing_style',
type: FormFieldType.Select,
options: [
{ label: 'Virtual Hosted Style', value: 'virtual' },
{ label: 'Path Style', value: 'path' },
],
required: false,
placeholder: 'Virtual Hosted Style',
tooltip: t('setting.S3CompatibleAddressingStyleTip'),
shouldRender: (formValues: any) => {
return formValues?.config?.bucket_type === 's3_compatible';
},
},
{
label: 'Endpoint URL',
name: 'config.credentials.endpoint_url',
@ -444,6 +459,7 @@ export const DataSourceFormDefaultValues = {
aws_access_key_id: '',
aws_secret_access_key: '',
endpoint_url: '',
addressing_style: 'virtual',
},
},
},