Feature/support iflytek spark#5181
Conversation
|
@webws is attempting to deploy a commit to the NextChat Team on Vercel. A member of the Team first needs to authorize it. |
WalkthroughThe recent updates significantly enhance the integration of the IFLYTEK API across various components of the application. Key changes include the introduction of optional configuration parameters, refined documentation for developers, and improved API management features. These enhancements streamline the development process, providing developers with essential tools and information for effectively utilizing the IFLYTEK service. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Settings
participant Auth
participant IflytekAPI
participant ClientApi
User->>Settings: Configure Iflytek settings
Settings->>ClientApi: Update Iflytek configurations
User->>Auth: Request authentication (IFLYTEK_API_KEY)
Auth->>IflytekAPI: Authenticate with API key
IflytekAPI-->>Auth: Success or error
Auth-->>ClientApi: Pass authentication status
ClientApi->>IflytekAPI: Make API request
IflytekAPI-->>ClientApi: Return response
ClientApi-->>User: Display results
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
|
Your build has completed! |
There was a problem hiding this comment.
Actionable comments posted: 1
Outside diff range, codebase verification and nitpick comments (1)
app/client/platforms/iflytek.ts (1)
38-62: Consider replacingconsole.logwith a proper logging mechanism.Using
console.logfor logging can be replaced with a more robust logging mechanism to ensure better control and consistency in log management.
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/auth.ts (1 hunks)
- app/api/iflytek/[...path]/route.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Additional comments not posted (32)
app/api/auth.ts (1)
91-93: LGTM! But verify the function usage in the codebase.The code changes are approved.
However, ensure that all function calls to
authwithModelProvider.Iflytekare correctly handled.app/api/iflytek/[...path]/route.ts (2)
17-41: LGTM! Ensure proper error handling and logging.The
handlefunction is well-structured and correctly implements authentication and request handling.However, ensure that the error handling and logging are sufficient for debugging and monitoring.
67-153: LGTM! Ensure proper URL construction and request handling.The
requestfunction is well-implemented and correctly handles URL construction and request options.However, ensure that the URL construction and request handling are correctly implemented and follow best practices.
app/store/access.ts (4)
54-56: LGTM! Consistent with existing API URL definitions.The addition of
DEFAULT_IFLYTEK_URLis consistent with the existing constants for other APIs.
110-113: LGTM! Consistent with existing access state definitions.The update to
DEFAULT_ACCESS_STATEis consistent with the existing structure for other APIs.
169-171: LGTM! Consistent with existing API validation methods.The addition of
isValidIflytekis consistent with the existing methods for other APIs.
187-187: LGTM! Consistent with existing authorization logic.The integration of
isValidIflytekinto theisAuthorizedmethod is consistent with the existing validation logic for other APIs.app/config/server.ts (3)
69-71: LGTM!The new environment variables for Iflytek API are correctly added and follow the existing pattern.
138-138: LGTM!The boolean variable
isIflytekis correctly introduced to check the presence of theIFLYTEK_API_KEY.
196-198: LGTM!The
iflytekUrlandiflytekApiKeyare correctly added to the return object.README_CN.md (1)
175-176: LGTM!The documentation for
IFLYTEK_API_KEYis clear and follows the existing format for other API keys.app/client/api.ts (5)
17-17: LGTM!The import statement for
SparkApiis correctly added and follows the existing pattern for other API integrations.
128-130: LGTM!The new case for
ModelProvider.Iflytekis correctly added to theClientApiconstructor.
214-214: LGTM!The new variable
isIflytekis correctly added to thegetHeadersfunction.
228-229: LGTM!The
iflytekApiKeyis correctly added to thegetConfigfunction.
293-294: LGTM!The new case for
ServiceProvider.Iflytekis correctly added to thegetClientApifunction.app/client/platforms/iflytek.ts (4)
65-67: LGTM!The method correctly removes the
spark-prefix from the model name.
68-70: LGTM!The method correctly extracts the message content from the response.
238-242: LGTM!The method correctly returns the usage object.
245-247: LGTM!The method correctly returns an empty array.
app/constant.ts (7)
29-29: LGTM!The constant
IFLYTEK_BASE_URLis correctly defined.
57-57: LGTM!The new entry for Iflytek is correctly added to the
ApiPathenumeration.
114-114: LGTM!The new entry for Iflytek is correctly added to the
ServiceProviderenumeration.
136-136: LGTM!The new entry for Iflytek is correctly added to the
ModelProviderenumeration.
209-212: LGTM!The constant
Iflytekis correctly defined.
332-338: LGTM!The constant
iflytekModelsis correctly defined.
422-430: LGTM!The updates to include mappings for the Iflytek models are correctly made.
app/locales/cn.ts (1)
434-444: LGTM!The localization entries for Iflytek are correctly defined.
app/locales/en.ts (2)
417-422: Localization entry for Iflytek API Key looks good.The titles and placeholders are clear and consistent with other entries.
423-426: Localization entry for Iflytek Endpoint looks good.The titles and subtitles are clear and consistent with other entries.
README.md (1)
283-285: Documentation for IFLYTEK_API_KEY looks good.The instructions are clear and provide necessary details on obtaining and using the API key.
app/components/settings.tsx (1)
1176-1213: Configuration component for Iflytek looks good.The input fields for the endpoint URL and API key are clear and consistent with other configuration components.
066ca89 to
40adf65
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/auth.ts (1 hunks)
- app/api/iflytek/[...path]/route.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review due to trivial changes (1)
- app/client/platforms/iflytek.ts
Files skipped from review as they are similar to previous changes (11)
- README.md
- README_CN.md
- app/api/auth.ts
- app/api/iflytek/[...path]/route.ts
- app/client/api.ts
- app/components/settings.tsx
- app/config/server.ts
- app/constant.ts
- app/locales/cn.ts
- app/locales/en.ts
- app/store/access.ts
40adf65 to
4c6d70d
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/auth.ts (1 hunks)
- app/api/iflytek/[...path]/route.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review due to trivial changes (1)
- README.md
Files skipped from review as they are similar to previous changes (11)
- README_CN.md
- app/api/auth.ts
- app/api/iflytek/[...path]/route.ts
- app/client/api.ts
- app/client/platforms/iflytek.ts
- app/components/settings.tsx
- app/config/server.ts
- app/constant.ts
- app/locales/cn.ts
- app/locales/en.ts
- app/store/access.ts
4c6d70d to
2c27cab
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/auth.ts (1 hunks)
- app/api/iflytek/[...path]/route.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review due to trivial changes (1)
- app/client/platforms/iflytek.ts
Files skipped from review as they are similar to previous changes (9)
- README.md
- app/api/iflytek/[...path]/route.ts
- app/client/api.ts
- app/components/settings.tsx
- app/config/server.ts
- app/constant.ts
- app/locales/cn.ts
- app/locales/en.ts
- app/store/access.ts
Additional comments not posted (2)
app/api/auth.ts (1)
91-93: LGTM! The new case for ModelProvider.Iflytek is correctly implemented.The code correctly assigns the
iflytekApiKeytosystemApiKeywhen themodelProviderisModelProvider.Iflytek.README_CN.md (1)
175-178: LGTM! The new section for IFLYTEK_API_KEY configuration is well-integrated and clear.The instructions provide essential guidance for users to configure the
IFLYTEK_API_KEYcorrectly.
2c27cab to
beadcb5
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/auth.ts (1 hunks)
- app/api/iflytek/[...path]/route.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review due to trivial changes (1)
- README_CN.md
Files skipped from review as they are similar to previous changes (9)
- README.md
- app/api/iflytek/[...path]/route.ts
- app/client/platforms/iflytek.ts
- app/components/settings.tsx
- app/config/server.ts
- app/constant.ts
- app/locales/cn.ts
- app/locales/en.ts
- app/store/access.ts
Additional comments not posted (5)
app/api/auth.ts (1)
91-93: LGTM! Ensure consistency with other model providers.The new case for
ModelProvider.Iflytekcorrectly assigns theiflytekApiKeytosystemApiKey. Ensure that similar handling is applied consistently across other model providers.app/client/api.ts (4)
17-17: LGTM! Import statement forSparkApi.The new import statement for
SparkApiis necessary for the integration and correctly added.
128-130: LGTM! Ensure consistency with other model providers.The new case for
ModelProvider.Iflytekcorrectly assigns a new instance ofSparkApitothis.llm. Ensure that similar handling is applied consistently across other model providers.
214-215: LGTM! Ensure consistency with other service providers.The new variable
isIflytekand the handling for the Iflytek provider in thegetHeadersfunction are correctly added. Ensure that similar handling is applied consistently across other service providers.Also applies to: 228-229, 239-239
293-294: LGTM! Ensure consistency with other service providers.The new case for
ServiceProvider.Iflytekcorrectly returns a new instance ofClientApifor the Iflytek service provider. Ensure that similar handling is applied consistently across other service providers.
|
另外需要参照这个pr把api route合并 |
In addition, you need to refer to this PR to merge the api route. |
beadcb5 to
c7e45f2
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/auth.ts (2 hunks)
- app/api/iflytek/[...path]/route.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review as they are similar to previous changes (7)
- README.md
- app/api/iflytek/[...path]/route.ts
- app/client/api.ts
- app/client/platforms/iflytek.ts
- app/constant.ts
- app/locales/en.ts
- app/store/access.ts
Additional comments not posted (14)
app/api/auth.ts (2)
91-93: Ensure correct concatenation of API key and secret.The concatenation of
serverConfig.iflytekApiKeyandserverConfig.iflytekApiSecretappears correct. Ensure that both values are properly set in the configuration.
105-105: Logging system API key.Ensure that logging the
systemApiKeydoes not expose sensitive information in production environments.app/config/server.ts (7)
70-70: Declaration ofIFLYTEK_URL.The declaration of
IFLYTEK_URLappears correct and follows the existing pattern.
71-71: Declaration ofIFLYTEK_API_KEY.The declaration of
IFLYTEK_API_KEYappears correct and follows the existing pattern.
72-72: Declaration ofIFLYTEK_API_SECRET.The declaration of
IFLYTEK_API_SECRETappears correct and follows the existing pattern.
139-139: Declaration ofisIflytek.The declaration of
isIflytekappears correct and follows the existing pattern.
198-198: Declaration ofiflytekUrl.The declaration of
iflytekUrlappears correct and follows the existing pattern.
199-199: Declaration ofiflytekApiKey.The declaration of
iflytekApiKeyappears correct and follows the existing pattern.
200-200: Declaration ofiflytekApiSecret.The declaration of
iflytekApiSecretappears correct and follows the existing pattern.README_CN.md (3)
176-178: Documentation forIFLYTEK_URL.The documentation for
IFLYTEK_URLappears clear and follows the existing pattern.
180-182: Documentation forIFLYTEK_API_KEY.The documentation for
IFLYTEK_API_KEYappears clear and follows the existing pattern.
184-186: Documentation forIFLYTEK_API_SECRET.The documentation for
IFLYTEK_API_SECRETappears clear and follows the existing pattern.app/locales/cn.ts (1)
434-449: LGTM! New localization entries are correctly formatted.The new entries for the Iflytek API provide clear and accurate information for users.
app/components/settings.tsx (1)
1176-1229: LGTM! New configuration component for Iflytek service is correctly implemented.The new component integrates well with the existing code and provides necessary input fields for the Iflytek service.
However, ensure that the new configuration component is correctly integrated and used in the codebase.
Verification successful
The new configuration component for Iflytek service is correctly integrated and used within the codebase.
The component
lflytekConfigComponentis defined and utilized withinapp/components/settings.tsx, confirming its proper integration.
app/components/settings.tsx: Definition and usage oflflytekConfigComponent.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the integration and usage of the new configuration component. # Test: Search for the usage of `lflytekConfigComponent`. Expect: Occurrences of the new component in the codebase. rg --type tsx -A 5 $'lflytekConfigComponent'Length of output: 71
Script:
#!/bin/bash # Description: Verify the integration and usage of the new configuration component. # Test: Search for the usage of `lflytekConfigComponent`. Expect: Occurrences of the new component in the codebase. rg -A 5 'lflytekConfigComponent'Length of output: 676
c7e45f2 to
6b4606e
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (13)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/[provider]/[...path]/route.ts (2 hunks)
- app/api/auth.ts (2 hunks)
- app/api/iflytek.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review due to trivial changes (3)
- README.md
- README_CN.md
- app/locales/en.ts
Files skipped from review as they are similar to previous changes (8)
- app/api/auth.ts
- app/client/api.ts
- app/client/platforms/iflytek.ts
- app/components/settings.tsx
- app/config/server.ts
- app/constant.ts
- app/locales/cn.ts
- app/store/access.ts
Additional comments not posted (10)
app/api/[provider]/[...path]/route.ts (2)
12-12: Import statement foriflytekHandlerlooks good.The import statement correctly follows the format of other handlers.
37-38: Switch case forApiPath.Iflyteklooks good.The switch case correctly routes requests to the
iflytekHandler.app/api/iflytek.ts (8)
1-12: Import statements look good.The import statements correctly follow the format of other modules and bring in necessary modules and constants.
18-26: Logging and OPTIONS request handling look good.The function includes logging and correctly handles OPTIONS requests.
35-41: Request processing and error handling look good.The function processes the request and includes error handling.
68-92: URL construction and timeout handling look good.The function correctly constructs the URL and handles timeouts.
108-137: Request filtering logic looks good.The function includes logic to filter requests based on custom models.
138-154: Response processing looks good.The function correctly processes the response and handles headers.
94-106: Verify the request options setup.The request options setup looks correct, but ensure that the headers and other options are correctly set for the
iflytekAPI.Verification successful
Request options setup is correct.
The headers and other options for the
iflytekAPI are correctly set in thefetchOptionsconfiguration.
- Headers:
Content-Type:"application/json"Authorization: Conditionally set from the request headers.- Method: Set to
req.method.- Body: Set to
req.body.- Redirect:
"manual"- Duplex:
"half"(with@ts-ignore).- Signal: Set to
controller.signal.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that the request options are correctly set for the `iflytek` API. # Test: Search for the request options setup. Expect: Correct headers and other options for the `iflytek` API. rg --type python -A 5 $'fetchOptions'Length of output: 67
Script:
#!/bin/bash # Description: Verify that the request options are correctly set for the `iflytek` API. # Test: Search for the request options setup. Expect: Correct headers and other options for the `iflytek` API. rg --type ts -A 5 'fetchOptions'Length of output: 10459
28-33: Verify the authentication logic.The authentication logic looks correct, but ensure that the
authfunction works as expected for theiflytekprovider.
6b4606e to
ff5626b
Compare
change the summary role from system to user
fix "Messages 中 system 角色必须位于列表的最开始"
ff5626b to
9f2a06a
Compare
|
|
||
| if (systemApiKey) { | ||
| console.log("[Auth] use system api key"); | ||
| console.log("[Auth] use system api key", systemApiKey); |
There was a problem hiding this comment.
这里不建议直接打印apikey到日志中(鉴于一些运维的经验)
| export const GET = handle; | ||
| export const POST = handle; | ||
|
|
||
| export const runtime = "edge"; |
There was a problem hiding this comment.
因为cf的原因,将api合并一起之后,这个文件不需要导出 GET, POST, runtime以及preferredRegion
9f2a06a to
3f2e7df
Compare
3f2e7df to
b2c1644
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (15)
- README.md (1 hunks)
- README_CN.md (1 hunks)
- app/api/[provider]/[...path]/route.ts (2 hunks)
- app/api/auth.ts (1 hunks)
- app/api/iflytek.ts (1 hunks)
- app/client/api.ts (6 hunks)
- app/client/platforms/baidu.ts (1 hunks)
- app/client/platforms/iflytek.ts (1 hunks)
- app/client/platforms/tencent.ts (1 hunks)
- app/components/settings.tsx (3 hunks)
- app/config/server.ts (3 hunks)
- app/constant.ts (7 hunks)
- app/locales/cn.ts (1 hunks)
- app/locales/en.ts (1 hunks)
- app/store/access.ts (4 hunks)
Files skipped from review due to trivial changes (1)
- README.md
Files skipped from review as they are similar to previous changes (10)
- README_CN.md
- app/api/[provider]/[...path]/route.ts
- app/api/iflytek.ts
- app/client/api.ts
- app/client/platforms/iflytek.ts
- app/components/settings.tsx
- app/constant.ts
- app/locales/cn.ts
- app/locales/en.ts
- app/store/access.ts
Additional comments not posted (6)
app/api/auth.ts (1)
91-93: LGTM! But verify the function usage in the codebase.The code changes are approved.
However, ensure that all function calls to
authwithModelProvider.Iflytekare correctly handled.Verification successful
Function usage with
ModelProvider.Iflytekis correctly handled.The
authfunction is called withModelProvider.Iflytekinapp/api/iflytek.ts, confirming that the usage is correctly handled.
app/api/iflytek.ts:auth(req, ModelProvider.Iflytek);Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify all function calls to `auth` with `ModelProvider.Iflytek`. # Test: Search for the function usage. Expect: Only occurrences of the new signature. rg --type ts -A 5 $'auth($_, ModelProvider.Iflytek)'Length of output: 53
Script:
#!/bin/bash # Description: Verify all occurrences of ModelProvider.Iflytek and cross-reference with auth function. # Search for all occurrences of ModelProvider.Iflytek in the codebase. rg --type ts 'ModelProvider.Iflytek' -A 5Length of output: 1065
app/config/server.ts (2)
69-72: LGTM!The changes correctly add the necessary environment variables for the Iflytek API integration.
Line range hint
139-201:
LGTM!The changes correctly integrate the Iflytek API configurations into the server configuration.
app/client/platforms/tencent.ts (1)
94-96: LGTM! But verify the logic.The code changes are approved.
However, ensure that the logic for changing the role of messages is correctly implemented and does not introduce any issues.
Verification successful
The logic for changing the role of messages is correctly implemented.
The
chatmethod inapp/client/platforms/tencent.tsensures that only the first message can have the "system" role, as intended.
- The role of messages is changed to "user" if they are not the first message and their role is "system".
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the logic for changing the role of messages in the chat method. # Test: Search for the chat method usage. Expect: Correct implementation of the role change logic. rg --type ts -A 10 $'chat(options: ChatOptions)'Length of output: 49
Script:
#!/bin/bash # Description: Search for the definition of the chat method and its usage in the codebase. # Step 1: Search for the chat method definition in TypeScript files. echo "Searching for chat method definition..." rg --type ts 'chat(' # Step 2: Search for the usage of the chat method in TypeScript files. echo "Searching for chat method usage..." rg --type ts 'chat('Length of output: 335
Script:
#!/bin/bash # Description: Search for the definition of the chat method and its usage in the codebase. # Step 1: Search for the chat method definition in TypeScript files. echo "Searching for chat method definition..." rg --type ts 'chat\(' # Step 2: Search for the usage of the chat method in TypeScript files. echo "Searching for chat method usage..." rg --type ts 'chat\('Length of output: 1917
Script:
#!/bin/bash # Description: Extract lines around the chat method in app/client/platforms/tencent.ts to verify the logic. # Step 1: Extract lines around the chat method in tencent.ts. echo "Extracting lines around the chat method in tencent.ts..." rg --type ts -A 20 -B 10 'async chat\(options: ChatOptions\)' app/client/platforms/tencent.tsLength of output: 1117
app/client/platforms/baidu.ts (2)
80-81: Ensure correct role mapping for messages.The role mapping logic correctly changes "system" roles to "user" roles. This ensures that only "user" or "function" roles are retained for messages at even indices.
87-97: Optimize message array length adjustment.The logic to adjust the message array when its length is even is well-implemented. It checks if the first message's role is "user" and inserts an "assistant" role message at the second position if true. Otherwise, it unshifts a "user" message. This ensures the message structure adheres to specific role requirements.

💻 变更类型 | Change Type
🔀 变更说明 | Description of Change
接入讯飞星火大模型
官方文档:https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html
📝 补充信息 | Additional Information
APIKey(假使APIKey是key123456)和APISecret(假使APISecret是secret123456),则请求头如下
验证截图
Summary by CodeRabbit
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Localization
Chores