Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
727 lines
22 KiB
Markdown
727 lines
22 KiB
Markdown
# Python 敺格<E695BA><E6A0BC>?SAE <20>函蔡<E587BD>滢<EFBFBD><E6BBA2>见<EFBFBD>
|
||
|
||
**<EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD>𧋦**: v1.0
|
||
**<EFBFBD>𥕦遣<EFBFBD>園𡢿**: 2024-12-24
|
||
**<EFBFBD><EFBFBD>鍂<EFBFBD><EFBFBD>凒**: AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - Python敺格<E695BA><E6A0BC>∴<EFBFBD>extraction_service嚗?
|
||
**<EFBFBD>臬<EFBFBD>蝐餃<EFBFBD>**: 瘚贝<E7989A><E8B49D>臬<EFBFBD>嚗<EFBFBD>蝠<EFBFBD>讐<EFBFBD>SAE嚗?
|
||
**<EFBFBD>格<EFBFBD>霂餉<EFBFBD>?*: 餈鞟輕撌亦<E6928C>撣<EFBFBD><E692A3><EFBFBD><EFBFBD><EFBFBD>穃極蝔见<E89D94>
|
||
|
||
---
|
||
|
||
## <20><> <20>桀<EFBFBD>
|
||
|
||
1. [<5B>滨蔭璉<E894AD><E79289>交<EFBFBD><E4BAA4>騟(#<23>滨蔭璉<E894AD><E79289>交<EFBFBD><E4BAA4>?
|
||
2. [<5B>𥕦遣SAE摨𠉛鍂嚗Áeb<65>批<EFBFBD><E689B9>堆<EFBFBD>](#<23>𥕦遣sae摨𠉛鍂web<65>批<EFBFBD><E689B9>?
|
||
3. [<5B>函蔡<E587BD>𡡞<EFBFBD>霂<EFBFBD>(#<23>函蔡<E587BD>𡡞<EFBFBD>霂?
|
||
4. [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭](#<23><><EFBFBD><EFBFBD>滨蔭)
|
||
5. [撣貉<EFBFBD><EFBFBD>桅<EFBFBD><EFBFBD>埝䰻](#撣貉<E692A3><E8B289>桅<EFBFBD><E6A185>埝䰻)
|
||
|
||
---
|
||
|
||
## <20>滨蔭璉<E894AD><E79289>交<EFBFBD><E4BAA4>?
|
||
### <20>?敹<><E695B9>韏<EFBFBD><E99F8F>蝖株恕
|
||
|
||
<EFBFBD>典<EFBFBD>憪见<EFBFBD>撱搴AE摨𠉛鍂<EFBFBD>㵪<EFBFBD>霂瑞&霈支誑銝贝<EFBFBD>皞𣂼歇<EFBFBD><EFBFBD><EFBFBD>撠梁貌嚗?
|
||
| 韏<><E99F8F>蝐餃<E89D90> | 蝖株恕憿?| <20>瑕<EFBFBD>雿滨蔭 |
|
||
|---------|-------|---------|
|
||
| **Docker<65>𨅯<EFBFBD>** | <20>?撌脫綫<E884AB><E7B6AB>秐ACR | [<EFBFBD>函蔡餈𥕦漲<EFBFBD>餉<EFBFBD>.md - 2.1 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md#21-acr摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>) |
|
||
| **VPC蝵𤑳<E89DB5>** | <20>?VPC ID<49><44>Switch ID | [<EFBFBD>函蔡餈𥕦漲<EFBFBD>餉<EFBFBD>.md - 2.2 VPC蝵𤑳<E89DB5>](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md#22-vpc蝵𤑳<E89DB5>銝篺at蝵穃<E89DB5>) |
|
||
| **摰匧<E691B0>蝏?* | <20>?摰匧<E691B0>蝏<EFBFBD>D | [<EFBFBD>函蔡餈𥕦漲<EFBFBD>餉<EFBFBD>.md - 2.2 VPC蝵𤑳<E89DB5>](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md#22-vpc蝵𤑳<E89DB5>銝篺at蝵穃<E89DB5>) |
|
||
| **OSS摮睃<E691AE>** | <20>?AccessKey<65><79>ucket<65>滨妍 | [<EFBFBD>函蔡餈𥕦漲<EFBFBD>餉<EFBFBD>.md - 2.5 OSS撖寡情摮睃<E691AE>](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md#25-oss撖寡情摮睃<E691AE>) |
|
||
| **SAE<41>賢<EFBFBD>蝛粹𡢿** | <20>?<3F>賢<EFBFBD>蝛粹𡢿ID | [<EFBFBD>函蔡餈𥕦漲<EFBFBD>餉<EFBFBD>.md - 2.4 SAE摨𠉛鍂](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md#24-sae-serverless摨𠉛鍂) |
|
||
|
||
### <20>𣑐 <20>𨅯<EFBFBD>靽⊥<E99DBD>
|
||
|
||
```
|
||
<EFBFBD>𨅯<EFBFBD><EFBFBD>啣<EFBFBD>嚗ĀPC<EFBFBD><EFBFBD><EFBFBD>嚗㚁<EFBFBD>
|
||
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
|
||
|
||
<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦嚗鯝1.0
|
||
<EFBFBD>𨅯<EFBFBD>憭批<EFBFBD>嚗?.12GB
|
||
<EFBFBD>蠘<EFBFBD>霂湔<EFBFBD>嚗䥪DF/Docx<63>𣂼<EFBFBD> + <20>唳旿皜<E697BF><E79A9C>嚗īandas/polars嚗?```
|
||
|
||
### <20><> 蝵𤑳<E89DB5><F0A491B3>滨蔭靽⊥<E99DBD>
|
||
|
||
```
|
||
VPC ID嚗鯝pc-2ze055cptkew9c38w4r06
|
||
vSwitch ID嚗鯝sw-2zevacop039bxrmj6yc0c嚗<63>虾<EFBFBD>典躹F嚗?摰匧<E691B0>蝏<EFBFBD>D嚗窃g-2zedk6fi8sgmmcwdu7tu
|
||
<EFBFBD>賢<EFBFBD>蝛粹𡢿嚗䬙n-beijing:test-airesearch
|
||
```
|
||
|
||
### <20><>儭?OSS<53>滨蔭靽⊥<E99DBD>
|
||
|
||
```
|
||
OSS_ACCESS_KEY_ID嚗匁TAI5tB2Dt3NdvBL3G7nYGv7
|
||
OSS_ACCESS_KEY_SECRET嚗?iSN9k39RkApP93QjUhC1DcPIeMG4V
|
||
OSS_BUCKET嚗惨i-clinical-research
|
||
OSS_ENDPOINT嚗駅ss-cn-beijing-internal.aliyuncs.com
|
||
```
|
||
|
||
<EFBFBD>𩤃<EFBFBD> **摰匧<E691B0>霅血<E99C85>**嚗鋫ccessKey<65>舀<EFBFBD><E88880>煺縑<E785BA>荔<EFBFBD>隞<EFBFBD>銁SAE<41>臬<EFBFBD><E887AC>㗛<EFBFBD>銝剝<E98A9D>蝵殷<E89DB5>銝滩<E98A9D><E6BBA9>𣂷漱<F0A382B7>蚣it<69>𡝗<EFBFBD><F0A19D97>啣<EFBFBD><E595A3>亙<EFBFBD>嚗?
|
||
---
|
||
|
||
## <20>𥕦遣SAE摨𠉛鍂嚗Áeb<65>批<EFBFBD><E689B9>堆<EFBFBD>
|
||
|
||
### 甇仿炊 1嚗朞<E59A97><E69C9E>兄AE<41>批<EFBFBD><E689B9>?
|
||
1. <20>餃<EFBFBD> [<5B>輸<EFBFBD>鈭烐綉<E78390>嗅蝱](https://homenew.console.aliyun.com/)
|
||
2. <20>𦦵揣撟嗉<E6929F><E59789>?**Serverless 摨𠉛鍂撘閙<E69298> SAE**
|
||
3. 蝖株恕<E6A0AA>啣<EFBFBD>銝?**<2A>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>**
|
||
4. <20>㗇𥋘<E39787>賢<EFBFBD>蝛粹𡢿 **test-airesearch**
|
||
|
||
---
|
||
|
||
### 甇仿炊 2嚗𡁜<E59A97>撱箏<E692B1><E7AE8F>?
|
||
#### 2.1 <20>箸𧋦靽⊥<E99DBD><E28AA5>滨蔭
|
||
|
||
<EFBFBD>孵稬 **<2A>𥕦遣摨𠉛鍂** <20>厰僼嚗<E583BC>‵<EFBFBD>嗘誑銝衤縑<E8A1A4>荔<EFBFBD>
|
||
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **摨𠉛鍂<F0A0899B>滨妍** | `python-extraction-test` | 撱箄悅<E7AE84>?`-test` <20>𡒊<EFBFBD><F0A1928A>箏<EFBFBD>瘚贝<E7989A><E8B49D>臬<EFBFBD> |
|
||
| **摨𠉛鍂蝐餃<E89D90>** | **頧駁<E9A0A7><E9A781><EFBFBD><EFBFBD><EFBFBD>?* | 瘚贝<E7989A><E8B49D>臬<EFBFBD>雿輻鍂頧駁<E9A0A7><E9A781><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞉𧋦 |
|
||
| **<2A>函蔡<E587BD>孵<EFBFBD>** | **<2A>𨅯<EFBFBD>** | <20>㗇𥋘摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>函蔡 |
|
||
|
||
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
|
||
|
||
---
|
||
|
||
#### 2.2 摨𠉛鍂<F0A0899B>函蔡<E587BD>滨蔭
|
||
|
||
##### <20>𨅯<EFBFBD><F0A885AF>滨蔭
|
||
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **<2A>𨅯<EFBFBD><F0A885AF>交<EFBFBD>** | 摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚 ACR嚗<52><E59A97><EFBFBD>㗇𥋘"<22>芸<EFBFBD>銋厰<E98A8B><E58EB0>?嚗?| |
|
||
| **<2A>𨅯<EFBFBD><F0A885AF>啣<EFBFBD>** | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | <20>𩤃<EFBFBD> 敹<>◆雿輻鍂VPC<50><43><EFBFBD><EFBFBD>啣<EFBFBD><br><3E>𩤃<EFBFBD> 敹<>◆<EFBFBD><E29786>鉄<EFBFBD><E98984>𧋦<EFBFBD>?`:v1.0` |
|
||
| **<2A>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦** | `v1.0` | <20>箏<EFBFBD><E7AE8F><EFBFBD>𧋦<EFBFBD>瘀<EFBFBD>銝滩<E98A9D>雿輻鍂 `:latest`<br><3E>𩤃<EFBFBD> 憒<><E68692>銝齿<E98A9D>摰𡁶<E691B0><F0A181B6>砍噡嚗玺AE隡𡁻<E99AA1>霈支蝙<E694AF>?`:latest` 撖潸稲<E6BDB8>匧<EFBFBD>憭梯揖 |
|
||
| **<2A>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>** | **<2A><>閬<EFBFBD><E996AC>蝵?* | <20>𩤃<EFBFBD> **<2A>喲睸甇仿炊**嚗𡁻<E59A97>蝵唧CR霈輸䔮<E8BCB8>剛<EFBFBD>嚗<EFBFBD><E59A97>銝𧢲䲮嚗?|
|
||
|
||
##### <20><> <20>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88><E696B9>滨蔭嚗<E894AD><E59A97><EFBFBD>格郊撉歹<E69289>
|
||
|
||
**<2A>𩤃<EFBFBD> 憒<><E68692><EFBFBD>箇緵 `insufficient_scope: authorization failed` <20>躰秤嚗<E7A7A4><E59A97>憿駁<E686BF>蝵格迨憿?*
|
||
|
||
<EFBFBD>曉<EFBFBD> **"<22>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>"** <20>?**"蝘<><E89D98><EFBFBD>𨅯<EFBFBD>隞枏<E99A9E>"** <20>滨蔭憿對<E686BF>
|
||
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **<2A>𨅯<EFBFBD>隞枏<E99A9E><E69E8F>啣<EFBFBD>** | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com` | <20>芸‵<E88AB8>筻egistry<72>笔<EFBFBD>嚗䔶<E59A97><E494B6><EFBFBD>鉄<EFBFBD>賢<EFBFBD>蝛粹𡢿/隞枏<E99A9E><E69E8F>?|
|
||
| **<2A>冽<EFBFBD><E586BD>?* | `gofeng117@163.com` | ACR<43>餃<EFBFBD><E9A483>冽<EFBFBD><E586BD>?|
|
||
| **撖<><E69296>** | `fengzhibo117` | ACR<43>餃<EFBFBD>撖<EFBFBD><E69296> |
|
||
|
||
<EFBFBD>働 **霂湔<E99C82>**嚗?- 餈嗘<E9A488><E59798>剛<EFBFBD><E5899B>其<EFBFBD>SAE<41>匧<EFBFBD>蝘<EFBFBD><E89D98><EFBFBD>𨅯<EFBFBD>
|
||
- 撖<><E69296>隡朞◤SAE<41>惩<EFBFBD>摮睃<E691AE>嚗䔶<E59A97>隡𡁏<E99AA1><F0A1818F>?- <20>剛<EFBFBD><E5899B>交<EFBFBD>嚗靀<E59A97>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD> - 2.1 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md#21-acr摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>)
|
||
|
||
##### 摨𠉛鍂摰硺<E691B0><E7A1BA>滨蔭
|
||
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **CPU** | 1<>?| `1000 millicores` |
|
||
| **<2A><><EFBFBD>** | 2GB | `2048 MB` |
|
||
| **摰硺<E691B0><E7A1BA>?* | 1 | <20>𩤃<EFBFBD> 敹<>◆<EFBFBD>喳<EFBFBD>1銝芸<E98A9D>靘页<E99D98>0銝芸<E98A9D>靘?<3F>滚𦛚<E6BB9A>𨀣迫 |
|
||
|
||
##### 摨𠉛鍂霈輸䔮霈曄蔭
|
||
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **摰孵膥蝡臬藁** | `8000` | Python FastAPI<50>滚𦛚蝡臬藁 |
|
||
| **<2A>讛悅蝐餃<E89D90>** | HTTP | |
|
||
| **<2A>臬炏撘<E7828F><E69298>臬<EFBFBD>蝵𤏸挪<F0A48FB8>?* | **<2A>?* | 隞<><E99A9E>蝵𤏸挪<F0A48FB8>殷<EFBFBD>鋡俏ode.js<6A>𡒊垢靚<E59EA2>鍂 |
|
||
|
||
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
|
||
|
||
---
|
||
|
||
#### 2.3 <20>臬<EFBFBD><E887AC>滨蔭
|
||
|
||
##### <20>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
|
||
<EFBFBD>孵稬 **瘛餃<E7989B><E9A483>臬<EFBFBD><E887AC>㗛<EFBFBD>**嚗屸<E59A97>𣂷葵瘛餃<E7989B>隞乩<E99A9E><E4B9A9>滨蔭嚗?
|
||
| <20>㗛<EFBFBD><E3979B>?| <20>㗛<EFBFBD><E3979B>?| 霂湔<E99C82> |
|
||
|--------|--------|------|
|
||
| `LOG_LEVEL` | `INFO` | <20>亙<EFBFBD>蝥批<E89DA5> |
|
||
| `TEMP_DIR` | `/tmp/extraction_service` | 銝湔𧒄<E6B994><F0A79284>辣<EFBFBD>桀<EFBFBD> |
|
||
| `TZ` | `Asia/Shanghai` | <20>嗅躹霈曄蔭 |
|
||
| `SERVICE_NAME` | `python-extraction` | <20>滚𦛚<E6BB9A><F0A69B9A><EFBFBD> |
|
||
| `SERVICE_VERSION` | `v1.0` | <20><>𧋦<EFBFBD><F0A78BA6><EFBFBD> |
|
||
| `OSS_ACCESS_KEY_ID` | `LTAI5tB2Dt3NdvBL3G7nYGv7` | OSS霈輸䔮撖<E494AE>𤨎ID |
|
||
| `OSS_ACCESS_KEY_SECRET` | `1iSN9k39RkApP93QjUhC1DcPIeMG4V` | OSS霈輸䔮撖<E494AE>𤨎Secret |
|
||
| `OSS_BUCKET` | `ai-clinical-research` | OSS Bucket<65>滨妍 |
|
||
| `OSS_ENDPOINT` | `oss-cn-beijing-internal.aliyuncs.com` | OSS<53><53><EFBFBD>Endpoint |
|
||
|
||
<EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗?- <20>臬<EFBFBD><E887AC>㗛<EFBFBD>銝剔<E98A9D> `OSS_ACCESS_KEY_SECRET` <20>舀<EFBFBD><E88880>煺縑<E785BA>荔<EFBFBD>SAE隡朞䌊<E69C9E>典<EFBFBD>撖?- <20><><EFBFBD>厩㴓憓<E3B493><E68693><EFBFBD>誯<EFBFBD><E8AAAF>臭誑<E887AD>典<EFBFBD><E585B8>券<EFBFBD>蝵脣<E89DB5>靽格㺿
|
||
|
||
##### <20>亙熒璉<E78692><E79289>?
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **<2A>亙熒璉<E78692><E79289>交䲮撘?* | HTTP | |
|
||
| **<2A>亙熒璉<E78692><E79289>亥楝敺?* | `/api/health` | FastAPI<50>亙熒璉<E78692><E79289>亦垢<E4BAA6>?|
|
||
| **<2A>亙熒璉<E78692><E79289>亦垢<E4BAA6>?* | `8000` | |
|
||
| **<2A>嘥<EFBFBD>撱嗉<E692B1><E59789>園𡢿** | `40` 蝘?| 蝏䠷<E89D8F><E4A0B7>𤩺<EFBFBD><F0A4A9BA>硋<EFBFBD><E7A18B>滚𦛚<E6BB9A>臬𢆡<E887AC>蹱𧒄<E8B9B1>?|
|
||
| **璉<><E79289>仿𡢿<E4BBBF>?* | `30` 蝘?| |
|
||
| **璉<><E79289>亥<EFBFBD><E4BAA5>?* | `10` 蝘?| |
|
||
| **<2A>亙熒<E4BA99><E78692><EFBFBD>?* | `2` 甈?| 餈䂿賒2甈⊥<E79488><E28AA5>蠘<EFBFBD>銝箏<E98A9D>摨?|
|
||
| **銝滚<E98A9D>摨琿<E691A8><E790BF>?* | `3` 甈?| 餈䂿賒3甈∪仃韐亥<E99F90>銝箔<E98A9D><E7AE94>亙熒 |
|
||
|
||
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
|
||
|
||
---
|
||
|
||
#### 2.4 蝵𤑳<E89DB5><F0A491B3>滨蔭
|
||
|
||
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|
||
|--------|---|------|
|
||
| **銝𤘪<E98A9D>蝵𤑳<E89DB5>VPC** | `vpc-2ze055cptkew9c38w4r06` | ai-clinical-vpc |
|
||
| **<2A>𡁏<EFBFBD>鈭斗揢<E69697>漓Switch** | `vsw-2zevacop039bxrmj6yc0c` | <20>舐鍂<E88890>慚 |
|
||
| **摰匧<E691B0>蝏?* | `sg-2zedk6fi8sgmmcwdu7tu` | |
|
||
| **SLB<4C>祉<EFBFBD>霈輸䔮** | **銝漤<E98A9D>蝵?* | 隞<><E99A9E>蝵𤏸挪<F0A48FB8>?|
|
||
|
||
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
|
||
|
||
---
|
||
|
||
#### 2.5 摨𠉛鍂<F0A0899B>笔𦶢<E7AC94>冽<EFBFBD><E586BD>滨蔭嚗<E894AD>虾<EFBFBD>㚁<EFBFBD>雿輻鍂暺䁅恕<E48185>喳虾嚗?
|
||
| <20>滨蔭憿?| 暺䁅恕<E48185>?| 霂湔<E99C82> |
|
||
|--------|--------|------|
|
||
| **<2A>臬𢆡頞<F0A286A1>𧒄<EFBFBD>園𡢿** | 300蝘?| <20>𨅯<EFBFBD>颲<EFBFBD>之嚗屸<E59A97>閬<EFBFBD><E996AC><EFBFBD>踹鍳<E8B8B9>冽𧒄<E586BD>?|
|
||
| **隡㗛<E99AA1><E3979B>𨀣㦤頞<E3A6A4>𧒄** | 30蝘?| 蝏坔<E89D8F><E59D94>典<EFBFBD><E585B8><EFBFBD><EFBFBD>敶枏<E695B6>霂瑟<E99C82><E7919F><EFBFBD>𧒄<EFBFBD>?|
|
||
|
||
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
|
||
|
||
---
|
||
|
||
#### 2.6 蝖株恕<E6A0AA>滨蔭
|
||
|
||
1. 隞𠉛<E99A9E>璉<EFBFBD><E79289>交<EFBFBD><E4BAA4>厰<EFBFBD>蝵桅★<E6A185>臬炏甇<E7828F>&
|
||
2. <20>孵<EFBFBD>蝖株恕嚗? - <20>?<3F>𨅯<EFBFBD><F0A885AF>啣<EFBFBD>雿輻鍂VPC<50><43><EFBFBD><EFBFBD>啣<EFBFBD>
|
||
- <20>?摰硺<E691B0><E7A1BA>?= 1嚗<31><E59A97><EFBFBD>?嚗? - <20>?OSS<53>臬<EFBFBD><E887AC>㗛<EFBFBD>撌脤<E6928C>蝵? - <20>?<3F>亙熒璉<E78692><E79289>亥楝敺<E6A59D>蛹 `/api/health`
|
||
3. <20>孵稬 **<2A>𥕦遣摨𠉛鍂**
|
||
|
||
---
|
||
|
||
### 甇仿炊 3嚗𡁶<E59A97>敺<EFBFBD><E695BA>蝵脣<E89DB5><E884A3>?
|
||
<EFBFBD>函蔡餈<EFBFBD><EFBFBD>憭抒漲<EFBFBD><EFBFBD>閬?**3-5<><35><EFBFBD>**嚗玺AE隡朞䌊<E69C9E>冽<EFBFBD>銵䔶誑銝𧢲郊撉歹<E69289>
|
||
|
||
```
|
||
1. <20>匧<EFBFBD>Docker<65>𨅯<EFBFBD>嚗<EFBFBD>漲2-3<><33><EFBFBD>嚗屸<E59A97><E5B1B8>?.12GB嚗? <20>婙<EFBFBD> 雿輻鍂VPC<50><43><EFBFBD>嚗屸<E59A97>笔漲颲<E6BCB2>翰
|
||
2. <20>臬𢆡摰孵膥嚗<E886A5>漲30蝘𡜐<E89D98>
|
||
<20>婙<EFBFBD> <20>扯<EFBFBD>Dockerfile銝剔<E98A9D>CMD<4D>賭誘
|
||
3. <20>亙熒璉<E78692><E79289>伐<EFBFBD>蝥?-2<><32><EFBFBD>嚗? <20>婙<EFBFBD> 蝑匧<E89D91>40蝘鍦<E89D98>撘<EFBFBD>憪𧢲<E686AA><F0A7A2B2>?/api/health
|
||
4. 摨𠉛鍂餈鞱<E9A488>銝哨<E98A9D><E593A8>函蔡<E587BD>𣂼<EFBFBD>嚗? <20>婙<EFBFBD> 摰硺<E691B0><E7A1BA>嗆<EFBFBD><E59786><EFBFBD>銝?餈鞱<E9A488>銝?
|
||
```
|
||
|
||
**摰墧𧒄<E5A2A7>烐綉<E78390>函蔡餈𥕦漲**嚗?- SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>䀹凒霈啣<E99C88> <20>?<3F>亦<EFBFBD>霂行<E99C82>
|
||
|
||
**<2A>亦<EFBFBD><E4BAA6>函蔡<E587BD>亙<EFBFBD>**嚗?- SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>亙<EFBFBD><E4BA99>亥砭 <20>?摰墧𧒄<E5A2A7>亙<EFBFBD>
|
||
|
||
**憸<><E686B8><EFBFBD>亙<EFBFBD><E4BA99><EFBFBD>捆**嚗?```log
|
||
INFO: Started server process [1]
|
||
INFO: Waiting for application startup.
|
||
INFO: Application startup complete.
|
||
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
|
||
```
|
||
|
||
---
|
||
|
||
## <20>函蔡<E587BD>𡡞<EFBFBD>霂?
|
||
### 甇仿炊 1嚗朞繮<E69C9E>硋<EFBFBD>蝵𤏸挪<F0A48FB8>桀𧑐<E6A180><F0A79190>
|
||
|
||
**<EFBFBD>𩤃<EFBFBD> <20>喲睸甇仿炊嚗𡁜<E59A97>憿颱<E686BF>SAE<41>批<EFBFBD><E689B9>啗繮<E59597>𣇉<EFBFBD>摰𧼮<E691B0>蝵飡P**
|
||
|
||
#### <20>瑕<EFBFBD><E79195>寞<EFBFBD>嚗?
|
||
1. SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂<F0A0899B>𡑒” <20>?<3F>孵稬 `python-extraction-test`
|
||
2. 餈𥕦<E9A488>摨𠉛鍂霂行<E99C82>憿?3. <20>曉<EFBFBD> **摰硺<E691B0><E7A1BA>𡑒”** <20>?**<2A>箸𧋦靽⊥<E99DBD>**
|
||
4. <20>亦<EFBFBD> **<EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD>啣<EFBFBD>**
|
||
|
||
**憸<><E686B8><EFBFBD>澆<EFBFBD>**嚗?```
|
||
<EFBFBD><EFBFBD><EFBFBD>IP嚗?72.17.x.x
|
||
蝡臬藁嚗?000
|
||
摰峕㟲<EFBFBD>啣<EFBFBD>嚗冴ttp://172.17.x.x:8000
|
||
```
|
||
|
||
**<2A>𩤃<EFBFBD> <20>滩<EFBFBD>**嚗?- <20>?銝滩<E98A9D><E6BBA9>𨀣<EFBFBD><F0A880A3>笔<EFBFBD>嚗<EFBFBD><E59A97> `extraction-service.internal`嚗?- <20>?銝滩<E98A9D>雿輻鍂 `localhost:8000`
|
||
- <20>?敹<>◆雿輻鍂SAE<41>批<EFBFBD><E689B9>唳遬蝷箇<E89DB7><E7AE87>笔<EFBFBD>IP<49>啣<EFBFBD>
|
||
|
||
**霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD>啣<EFBFBD>**嚗?```
|
||
# <20>?撌脰繮<E884B0>硋<EFBFBD>蝵穃𧑐<E7A983><F0A79190>嚗?024-12-24嚗㚁<E59A97>
|
||
PYTHON_SERVICE_INTERNAL_IP=172.17.173.66:8000
|
||
PYTHON_SERVICE_URL=http://172.17.173.66:8000
|
||
```
|
||
|
||
<EFBFBD>𩤃<EFBFBD> **<2A>滩<EFBFBD><E6BBA9>鞾<EFBFBD>**嚗?- 甇文𧑐<E69687><F0A79190>隞<EFBFBD>銁VPC<50><43><EFBFBD><EFBFBD>航挪<E888AA>?- Node.js<6A>𡒊垢<F0A1928A><E59EA2>閬<EFBFBD><E996AC>蝵格迨<E6A0BC>啣<EFBFBD>雿靝蛹<E99D9D>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
- 憒<><E68692>摰硺<E691B0><E7A1BA>滚鍳嚗䬠P<E4ACA0>啣<EFBFBD><E595A3>航<EFBFBD>隡𡁜<E99AA1><F0A1819C>吔<EFBFBD><E59094><EFBFBD><EFBFBD>齿鰵<E9BDBF>瑕<EFBFBD>嚗?
|
||
---
|
||
|
||
### 甇仿炊 2嚗𡁜<E59A97>摨瑟<E691A8><E7919F>交<EFBFBD>霂?
|
||
#### <20>寞<EFBFBD> 1嚗帋<E59A97>SAE<41>批<EFBFBD><E689B9>唳<EFBFBD>霂𤏪<E99C82><F0A48FAA>刻<EFBFBD>嚗?
|
||
1. SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摰硺<E691B0><E7A1BA>𡑒”
|
||
2. <20>孵稬摰硺<E691B0><E7A1BA>?**Webshell** <20>厰僼嚗<E583BC><E59A97><EFBFBD>𨀣𣈲<F0A880A3><F0A388B2><EFBFBD>
|
||
3. <20>扯<EFBFBD><E689AF>賭誘嚗<E8AA98>蝙<EFBFBD>沌ython瘚贝<E7989A>嚗<EFBFBD><E59A97>銝箏捆<E7AE8F>其葉瘝⊥<E7989D>curl嚗㚁<E59A97>
|
||
```bash
|
||
python -c "import urllib.request; print(urllib.request.urlopen('http://localhost:8000/api/health').read().decode())"
|
||
```
|
||
|
||
<EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗𡁜<E59A97><F0A1819C>𣈯<EFBFBD><F0A388AF>?`curl: command not found`嚗諹秩<E8ABB9>𤾸捆<F0A4BEB8>其葉瘝⊥<E7989D>摰㕑<E691B0>curl撌亙<E6928C>嚗<EFBFBD>移蝞<E7A7BB><E89D9E>𨅯<EFBFBD>嚗㚁<E59A97>霂瑚蝙<E7919A>其<EFBFBD><E585B6>Y<EFBFBD>Python<6F>賭誘<E8B3AD>?
|
||
#### <20>寞<EFBFBD> 2嚗帋<E59A97><E5B88B>砍𧑐瘚贝<E7989A>嚗<EFBFBD><E59A97>閬<EFBFBD>葩<EFBFBD>園<EFBFBD>蝵殷<E89DB5>
|
||
|
||
<EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗𡁶眏鈭窰ython<6F>滚𦛚隞<F0A69B9A>銁VPC<50><43><EFBFBD>嚗峕𧋦<E5B395>唳<EFBFBD>瘜閧凒<E996A7>亥挪<E4BAA5>殷<EFBFBD><E6AEB7><EFBFBD>閬<EFBFBD>誑銝衤遙銝<E98199><E98A9D>寞<EFBFBD>嚗?
|
||
**<2A>厰★A嚗𡁻<E59A97>朞<EFBFBD>Node.js<6A>𡒊垢頧砍<E9A0A7>嚗<EFBFBD>綫<EFBFBD>琜<EFBFBD>**
|
||
- 敺<>ode.js<6A>𡒊垢<F0A1928A>函蔡<E587BD>𠬍<EFBFBD><F0A0AC8D>朞<EFBFBD><E69C9E>𡒊垢<F0A1928A>湔𦻖瘚贝<E7989A>
|
||
|
||
**<2A>厰★B嚗帋葩<E5B88B>園<EFBFBD>蝵桀<E89DB5>蝵騌LB嚗<42><E59A97>霂訫<E99C82><E8A8AB>𣂼<EFBFBD><F0A382BC>𣳇膄嚗?*
|
||
1. SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摨𠉛鍂霈輸䔮霈曄蔭
|
||
2. <20>孵稬 **蝏穃<E89D8F>SLB**
|
||
3. <20>𥕦遣<F0A595A6>㚚<EFBFBD>㗇𥋘<E39787>祉<EFBFBD>SLB
|
||
4. 瘚贝<E7989A>摰峕<E691B0><E5B395>𡒊<EFBFBD><F0A1928A>喳<EFBFBD><E596B3>又LB
|
||
|
||
**憸<><E686B8><EFBFBD>滚<EFBFBD>**嚗?```json
|
||
{
|
||
"status": "healthy",
|
||
"checks": {
|
||
"pymupdf": {
|
||
"available": true,
|
||
"version": "1.26.7"
|
||
},
|
||
"nougat": {
|
||
"available": false,
|
||
"error": "Nougat<61>芸<EFBFBD>鋆<EFBFBD><E98B86>撌脩宏<E884A9>支誑<E694AF>誩<EFBFBD><E8AAA9>𨅯<EFBFBD>嚗?
|
||
},
|
||
"temp_dir": {
|
||
"path": "/tmp/extraction_service",
|
||
"writable": true
|
||
}
|
||
},
|
||
"timestamp": "2024-12-24T10:30:00Z"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 甇仿炊 3嚗𡁏䰻<F0A1818F>见<EFBFBD><E8A781>冽𠯫敹?
|
||
1. SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>亙<EFBFBD><E4BA99>亥砭
|
||
2. <20>㗇𥋘 **摰墧𧒄<E5A2A7>亙<EFBFBD>**
|
||
3. 蝖株恕<E6A0AA>亙<EFBFBD>銝剖<E98A9D><E58996>恬<EFBFBD>
|
||
|
||
```log
|
||
<EFBFBD>?甇<>虜<EFBFBD>臬𢆡<E887AC><F0A286A1><EFBFBD>嚗?INFO: Started server process [1]
|
||
INFO: Application startup complete.
|
||
INFO: Uvicorn running on http://0.0.0.0:8000
|
||
|
||
<EFBFBD>?<3F>亙熒璉<E78692><E79289>交𠯫敹梹<E695B9>瘥?0蝘雴<E89D98>甈∴<E79488>嚗?INFO: 172.17.x.x:xxxx - "GET /api/health HTTP/1.1" 200 OK
|
||
|
||
<EFBFBD>?憒<><E68692><EFBFBD>箇緵<E7AE87>躰秤嚗?ERROR: ImportError: libXXX.so: cannot open shared object file
|
||
<20>?霂湔<E99C82>蝟餌<E89D9F>靘肽<E99D98>蝻箏仃嚗峕<E59A97><E5B395>主ockerfile
|
||
```
|
||
|
||
---
|
||
|
||
### 甇仿炊 4嚗𡁶<E59A97><F0A181B6>批<EFBFBD><E689B9>函𠶖<E587BD>?
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>箸𧋦靽⊥<E99DBD>
|
||
|
||
**<2A>喲睸<E596B2><E79DB8><EFBFBD>**嚗?| <20><><EFBFBD> | 甇<>虜<EFBFBD>?| 霂湔<E99C82> |
|
||
|------|--------|------|
|
||
| **摨𠉛鍂<F0A0899B>嗆<EFBFBD>?* | 餈鞱<E9A488>銝?| 蝏輯𠧧 |
|
||
| **摰硺<E691B0><E7A1BA>?* | 1/1 | 1銝芸<E98A9D>靘贝<E99D98>銵䔶葉 |
|
||
| **<2A>亙熒摰硺<E691B0><E7A1BA>?* | 1 | <20>亙熒璉<E78692><E79289>仿<EFBFBD>朞<EFBFBD> |
|
||
| **CPU雿輻鍂<E8BCBB>?* | < 20% | 蝛粹𤦭<E7B2B9>嗆<EFBFBD>?|
|
||
| **<2A><><EFBFBD>雿輻鍂<E8BCBB>?* | < 50% | 蝥?GB嚗㇊ython<6F>箇<EFBFBD>+靘肽<E99D98>嚗?|
|
||
|
||
---
|
||
|
||
## <20><><EFBFBD><EFBFBD>滨蔭
|
||
|
||
### 甇仿炊 1嚗𡁏凒<F0A1818F>衹ode.js<6A>𡒊垢<F0A1928A>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
|
||
<EFBFBD>沐ode.js<6A>𡒊垢<F0A1928A><E59EA2>AE摨𠉛鍂銝哨<E98A9D>瘛餃<E7989B>隞乩<E99A9E><E4B9A9>臬<EFBFBD><E887AC>㗛<EFBFBD>嚗?
|
||
```bash
|
||
# Python敺格<E695BA><E6A0BC>∪<EFBFBD>蝵穃𧑐<E7A983><F0A79190>
|
||
EXTRACTION_SERVICE_URL=http://172.17.x.x:8000
|
||
|
||
# 瘜冽<E7989C>嚗?# 1. <20>踵揢銝箏<E98A9D><E7AE8F><EFBFBD>繮<EFBFBD>𣇉<EFBFBD><F0A38789><EFBFBD><EFBFBD>IP
|
||
# 2. 銝滩<E98A9D><E6BBA9>惩偏<E683A9>冽<EFBFBD><E586BD>?/
|
||
```
|
||
|
||
**<2A>滨蔭雿滨蔭**嚗?- SAE<41>批<EFBFBD><E689B9>?<3F>?Node.js<6A>𡒊垢摨𠉛鍂 <20>?摨𠉛鍂<F0A0899B>滨蔭 <20>?<3F>臬<EFBFBD><E887AC>㗛<EFBFBD> <20>?瘛餃<E7989B>
|
||
|
||
**<2A>滨蔭<E6BBA8>擧<EFBFBD>雿?*嚗?- <20>滚鍳Node.js<6A>𡒊垢摨𠉛鍂嚗𠄎AE隡朞䌊<E69C9E>券<EFBFBD><E588B8>荔<EFBFBD>
|
||
|
||
---
|
||
|
||
### 甇仿炊 2嚗𡁜<E59A97>蝡臭誨<E887AD><E8AAA8><EFBFBD>霂<EFBFBD><E99C82><EFBFBD>舫<EFBFBD>㚁<EFBFBD>
|
||
|
||
<EFBFBD>沐ode.js<6A>𡒊垢隞<E59EA2><E99A9E>銝剜溶<E5899C>䭾<EFBFBD>霂閧垢<E996A7>對<EFBFBD>
|
||
|
||
```typescript
|
||
// backend/src/routes/test.ts
|
||
|
||
import { Router } from 'express';
|
||
import axios from 'axios';
|
||
|
||
const router = Router();
|
||
|
||
router.get('/test-python-service', async (req, res) => {
|
||
try {
|
||
const extractionServiceUrl = process.env.EXTRACTION_SERVICE_URL || 'http://localhost:8000';
|
||
|
||
// 1. 瘚贝<E7989A><E8B49D>亙熒璉<E78692><E79289>? const healthRes = await axios.get(`${extractionServiceUrl}/api/health`);
|
||
|
||
res.json({
|
||
success: true,
|
||
message: 'Python service is healthy',
|
||
data: healthRes.data
|
||
});
|
||
} catch (error) {
|
||
res.status(500).json({
|
||
success: false,
|
||
message: 'Failed to connect to Python service',
|
||
error: error.message
|
||
});
|
||
}
|
||
});
|
||
|
||
export default router;
|
||
```
|
||
|
||
**瘚贝<E7989A><E8B49D>寞<EFBFBD>**嚗?```bash
|
||
# 隞𤾸<E99A9E>蝡舀<E89DA1>Postman霈輸䔮
|
||
GET https://your-backend-domain.com/api/test-python-service
|
||
|
||
# 憸<><E686B8><EFBFBD>滚<EFBFBD>嚗?{
|
||
"success": true,
|
||
"message": "Python service is healthy",
|
||
"data": { "status": "healthy", ... }
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 甇仿炊 3嚗𡁶垢<F0A181B6>啁垢<E59581>蠘<EFBFBD>瘚贝<E7989A>
|
||
|
||
瘚贝<EFBFBD>摰峕㟲銝𡁜𦛚瘚<EFBFBD><EFBFBD>嚗?
|
||
#### 瘚贝<E7989A><E8B49D>箸艶 1嚗䥪DF<44><46>𧋦<EFBFBD>𣂼<EFBFBD>
|
||
|
||
**瘚<><E7989A>**嚗?```
|
||
<EFBFBD>滨垢銝𠹺<EFBFBD>PDF
|
||
<20>?Node.js<6A>𡒊垢<F0A1928A>交𤣰
|
||
<20>?HTTP POST 頧砍<E9A0A7><E7A08D>?Python<6F>滚𦛚 (EXTRACTION_SERVICE_URL)
|
||
<20>?Python<6F>滚𦛚<E6BB9A>𣂼<EFBFBD><F0A382BC><EFBFBD>𧋦
|
||
<20>?餈𥪜<E9A488>JSON蝏𤘪<E89D8F>
|
||
<20>?<3F>𡒊垢憭<E59EA2><E686AD>撟嗉<E6929F><E59789>𧼮<EFBFBD>蝡?```
|
||
|
||
**瘚贝<E7989A>甇仿炊**嚗?1. <20>典<EFBFBD>蝡臭<E89DA1>隡牐<E99AA1>銝芸<E98A9D><E88AB8><EFBFBD>DF<44><46>辣嚗? 5MB嚗?2. <20>亦<EFBFBD>Node.js<6A>𡒊垢<F0A1928A>亙<EFBFBD>嚗? ```log
|
||
INFO: Calling Python service: http://172.17.x.x:8000/api/extract/pdf
|
||
INFO: Python service responded in 2.3s
|
||
```
|
||
3. <20>亦<EFBFBD>Python<6F>滚𦛚<E6BB9A>亙<EFBFBD>嚗? ```log
|
||
INFO: Request: POST /api/extract/pdf
|
||
INFO: File size: 1.2MB, filename: test.pdf
|
||
INFO: Using PyMuPDF extraction
|
||
INFO: Response: 200 (took 2.10s)
|
||
```
|
||
|
||
#### 瘚贝<E7989A><E8B49D>箸艶 2嚗𡁏㺭<F0A1818F>格<EFBFBD>瘣梹<E798A3>DC撌亙<E6928C>嚗?
|
||
**瘚<><E7989A>**嚗?```
|
||
<EFBFBD>滨垢銝𠹺<EFBFBD>Excel
|
||
<20>?<3F>𡒊垢靚<E59EA2>鍂 Python<6F>滚𦛚 /api/operations/fillna
|
||
<20>?Python雿輻鍂pandas/polars憭<73><E686AD>
|
||
<20>?餈𥪜<E9A488>皜<EFBFBD><E79A9C><EFBFBD>𡒊<EFBFBD><F0A1928A>唳旿
|
||
```
|
||
|
||
**瘚贝<E7989A>甇仿炊**嚗?1. <20>求C璅∪<E79285>銝𠹺<E98A9D>Excel<65><6C>辣
|
||
2. <20>扯<EFBFBD><E689AF>唳旿皜<E697BF><E79A9C><EFBFBD>滢<EFBFBD>嚗<EFBFBD><E59A97>fillna嚗?3. 撉諹<E69289>餈𥪜<E9A488>蝏𤘪<E89D8F><F0A498AA>臬炏甇<E7828F>&
|
||
|
||
---
|
||
|
||
## 撣貉<E692A3><E8B289>桅<EFBFBD><E6A185>埝䰻
|
||
|
||
### <20>桅<EFBFBD> 1嚗𡁻<E59A97><F0A181BB>𤩺<EFBFBD><F0A4A9BA>硋仃韐伐<E99F90>insufficient_scope: authorization failed嚗?
|
||
**<2A><>𠶖**嚗?```
|
||
Error: ImagePullBackOff
|
||
Failed to pull image: insufficient_scope: authorization failed
|
||
pull access denied, repository does not exist or may require authorization
|
||
```
|
||
|
||
**<2A>寞𧋦<E5AF9E>笔<EFBFBD>**嚗锭AE瘝⊥<E7989D><E28AA5><EFBFBD><EFBFBD>霈輸䔮ACR蝘<52><E89D98><EFBFBD>𨅯<EFBFBD>隞枏<E99A9E>
|
||
|
||
**閫<><E996AB>甇仿炊**嚗?
|
||
**<2A>寞<EFBFBD>1嚗𡁻<E59A97>蝵桅<E89DB5><E6A185>譍<EFBFBD>摨栞恕霂<E68195><E99C82><EFBFBD>刻<EFBFBD>嚗?*
|
||
|
||
1. SAE<41>批<EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>孵稬"<22>函蔡摨𠉛鍂"<22>?蝻𤥁<E89DBB>摨𠉛鍂"
|
||
2. <20>?**"<22>𨅯<EFBFBD><F0A885AF>滨蔭"** <20>典<EFBFBD>嚗峕𪄳<E5B395>?**"<22>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>"** <20>?**"蝘<><E89D98><EFBFBD>𨅯<EFBFBD>隞枏<E99A9E>"**
|
||
3. <20>滨蔭隞乩<E99A9E>靽⊥<E99DBD>嚗? ```
|
||
<20>𨅯<EFBFBD>隞枏<E99A9E><E69E8F>啣<EFBFBD>嚗䬙rpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com
|
||
<20>冽<EFBFBD><E586BD>㵪<EFBFBD>gofeng117@163.com
|
||
撖<><E69296>嚗餎engzhibo117
|
||
```
|
||
4. 靽嘥<E99DBD><E598A5>滨蔭撟園<E6929F><E59C92>圈<EFBFBD>蝵?
|
||
**<2A>寞<EFBFBD>2嚗帋蝙<E5B88B>沖AM閫坿𠧧<E59DBF><F0A0A7A7><EFBFBD>嚗<EFBFBD><E59A97>鈭抒㴓憓<E3B493>綫<EFBFBD>琜<EFBFBD>**
|
||
|
||
1. RAM<41>批<EFBFBD><E689B9>?<3F>?<3F>𥕦遣閫坿𠧧 <20>?<3F>㗇𥋘"<22>輸<EFBFBD>鈭烐<E988AD><E78390>? <20>?<3F>𦯀縑<F0A6AF80>滚𦛚<E6BB9A>?SAE"
|
||
2. 銝箄<E98A9D><E7AE84>脫溶<E884AB>䭾<EFBFBD><E4ADBE>琜<EFBFBD>`AliyunContainerRegistryReadOnlyAccess`
|
||
3. SAE摨𠉛鍂<F0A0899B>滨蔭 <20>?擃条漣霈曄蔭 <20>?蝏穃<E89D8F>RAM閫坿𠧧
|
||
|
||
**<2A>寞<EFBFBD>3嚗朞挽蝵唧CR隞枏<E99A9E>銝箏<E98A9D>撘<EFBFBD>嚗<EFBFBD><E59A97>瘚贝<E7989A><E8B49D>臬<EFBFBD>嚗?*
|
||
|
||
<EFBFBD>𩤃<EFBFBD> 銝齿綫<E9BDBF>鞟<EFBFBD>鈭抒㴓憓<E3B493>蝙<EFBFBD>剁<EFBFBD>摰匧<E691B0>憌𡡞埯嚗?
|
||
1. ACR<43>批<EFBFBD><E689B9>?<3F>?銝芯犖摰硺<E691B0> <20>?隞枏<E99A9E><E69E8F>𡑒”
|
||
2. <20>曉<EFBFBD> `ai-clinical/python-extraction`
|
||
3. 隞枏<E99A9E>霈曄蔭 <20>?霈輸䔮<E8BCB8>批<EFBFBD> <20>?<3F>嫣蛹"<22>砍<EFBFBD>"
|
||
|
||
---
|
||
|
||
### <20>桅<EFBFBD> 2嚗𡁜<E59A97><F0A1819C>典鍳<E585B8>典仃韐伐<E99F90><E4BC90>嗡<EFBFBD><E597A1>笔<EFBFBD>嚗?
|
||
**<2A><>𠶖**嚗?```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>唳遬蝷綽<EFBFBD>摨𠉛鍂<EFBFBD>臬𢆡憭梯揖
|
||
摰硺<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>撘<EFBFBD>虜
|
||
```
|
||
|
||
**<2A>埝䰻甇仿炊**嚗?
|
||
**1. <20>亦<EFBFBD><E4BAA6>函蔡<E587BD>亙<EFBFBD>**
|
||
```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>䀹凒霈啣<E99C88> <20>?<3F>亦<EFBFBD>霂行<E99C82>
|
||
```
|
||
|
||
**2. 撣貉<E692A3><E8B289>躰秤<E8BAB0>𡃏圾<F0A1838F>單䲮瘜?*嚗?
|
||
| <20>躰秤靽⊥<E99DBD> | <20>笔<EFBFBD> | 閫<><E996AB><EFBFBD>寞<EFBFBD> |
|
||
|---------|------|---------|
|
||
| `ImagePullBackOff` + `failed to resolve reference "...:latest"` | **<2A>𨅯<EFBFBD><F0A885AF>啣<EFBFBD><E595A3>芣<EFBFBD>摰𡁶<E691B0><F0A181B6>砍噡** | **<2A>券<EFBFBD><E588B8>誩𧑐<E8AAA9><F0A79190><EFBFBD>怠偏瘛餃<E7989B> `:v1.0`**<br>摰峕㟲<E5B395>啣<EFBFBD>嚗䫤...python-extraction:v1.0` |
|
||
| `ImagePullBackOff` + `insufficient_scope: authorization failed` | **ACR霈輸䔮<E8BCB8><E494AE><EFBFBD>銝滩雲嚗<E99BB2><E59A97>撣貉<E692A3>嚗?* | **<EFBFBD>滨蔭<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD>霈方<EFBFBD>**<br>1. SAE摨𠉛鍂<F0A0899B>滨蔭 <20>?<3F>𨅯<EFBFBD><F0A885AF>滨蔭<br>2. <20>滨蔭<E6BBA8>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88><br>3. <20>冽<EFBFBD><E586BD>㵪<EFBFBD>`gofeng117@163.com`<br>4. 撖<><E69296>嚗䫤fengzhibo117` |
|
||
| `ImagePullBackOff` + `pull access denied` | <20>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>憭梯揖 | 璉<><E79289>亦鍂<E4BAA6>瑕<EFBFBD>/撖<><E69296><EFBFBD>臬炏甇<E7828F>& |
|
||
| `ImagePullBackOff` | <20>𨅯<EFBFBD><F0A885AF>啣<EFBFBD><E595A3>躰秤 | 蝖株恕雿輻鍂VPC<50><43><EFBFBD><EFBFBD>啣<EFBFBD>嚗<EFBFBD>蒂-vpc<70>𡒊<EFBFBD>嚗?|
|
||
| `ImportError: libXXX.so` | 蝟餌<E89D9F>靘肽<E99D98>蝻箏仃 | 璉<><E79289>主ockerfile嚗𣬚&靽嘥<E99DBD>鋆<EFBFBD><E98B86><EFBFBD><EFBFBD><EFBFBD>㕑<EFBFBD>銵峕𧒄靘肽<E99D98> |
|
||
| `OOMKilled` | <20><><EFBFBD>銝滩雲 | 憓𧼮<E68693><F0A7BCAE><EFBFBD><EFBFBD><EFBFBD>滨蔭嚗?GB <20>?4GB嚗?|
|
||
| `Health check failed` | <20>亙熒璉<E78692><E79289>交𧊋<E4BAA4>朞<EFBFBD> | 璉<><E79289>?`/api/health` 蝡舐<E89DA1><E88890>臬炏甇<E7828F>虜 |
|
||
|
||
**3. <20>亦<EFBFBD>摰孵膥<E5ADB5>亙<EFBFBD>**
|
||
```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>亙<EFBFBD><E4BA99>亥砭 <20>?摰墧𧒄<E5A2A7>亙<EFBFBD>
|
||
```
|
||
|
||
---
|
||
|
||
### <20>桅<EFBFBD> 3嚗𡁜<E59A97>摨瑟<E691A8><E7919F>亙仃韐?
|
||
**<2A><>𠶖**嚗?```
|
||
摰硺<EFBFBD><EFBFBD>𡑒”<EFBFBD>曄內嚗𡁜<EFBFBD>摨瑟<EFBFBD><EFBFBD>亙仃韐?摰硺<E691B0><E7A1BA>滚<EFBFBD><E6BB9A>滚鍳
|
||
```
|
||
|
||
**<2A>埝䰻甇仿炊**嚗?
|
||
**1. 蝖株恕<E6A0AA>滚𦛚<E6BB9A>臬炏甇<E7828F>虜<EFBFBD>臬𢆡**
|
||
```bash
|
||
# <20>亦<EFBFBD><E4BAA6>亙<EFBFBD>銝剜糓<E5899C>行<EFBFBD>嚗?INFO: Uvicorn running on http://0.0.0.0:8000
|
||
```
|
||
|
||
**2. 蝖株恕蝡臬藁<E887AC>臬炏甇<E7828F>&**
|
||
```bash
|
||
# 璉<><E79289>亙捆<E4BA99>函垢<E587BD><E59EA2><EFBFBD>蝵殷<E89DB5>8000
|
||
# 璉<><E79289>亙<EFBFBD>摨瑟<E691A8><E7919F>亦垢<E4BAA6><E59EA2><EFBFBD>蝵殷<E89DB5>8000
|
||
```
|
||
|
||
**3. <20>见𢆡瘚贝<E7989A><E8B49D>亙熒璉<E78692><E79289>亦垢<E4BAA6>?*
|
||
```bash
|
||
# <20>沒AE Webshell銝剜<E98A9D>銵䕘<E98AB5>
|
||
curl http://localhost:8000/api/health
|
||
```
|
||
|
||
**4. 靚<>㟲<EFBFBD>亙熒璉<E78692><E79289>亙<EFBFBD><E4BA99>?*
|
||
```
|
||
<EFBFBD>嘥<EFBFBD>撱嗉<EFBFBD><EFBFBD>園𡢿嚗?0蝘?<3F>?60蝘𡜐<E89D98>憒<EFBFBD><E68692><EFBFBD>𨅯<EFBFBD><F0A885AF>匧<EFBFBD><E58CA7>g<EFBFBD>
|
||
璉<EFBFBD><EFBFBD>亥<EFBFBD><EFBFBD>塚<EFBFBD>10蝘?<3F>?20蝘?```
|
||
|
||
---
|
||
|
||
### <20>桅<EFBFBD> 4嚗鐭ode.js<6A>𡒊垢<F0A1928A>䭾<EFBFBD>餈墧𦻖Python<6F>滚𦛚
|
||
|
||
**<2A><>𠶖**嚗?```
|
||
<EFBFBD>𡒊垢<EFBFBD>亙<EFBFBD>嚗鋴onnection refused
|
||
<EFBFBD>?ECONNREFUSED: connect ECONNREFUSED 172.17.x.x:8000
|
||
```
|
||
|
||
**<2A>埝䰻甇仿炊**嚗?
|
||
**1. 蝖株恕<E6A0AA><E68195><EFBFBD><EFBFBD>啣<EFBFBD><E595A3>臬炏甇<E7828F>&**
|
||
```bash
|
||
# <20>?<3F>躰秤<E8BAB0>滨蔭嚗<E894AD><E59A97>瘚讠<E7989A><E8AEA0>笔<EFBFBD>嚗?EXTRACTION_SERVICE_URL=http://python-extraction.internal:8000
|
||
|
||
# <20>?甇<>&<EFBFBD>滨蔭嚗𠄎AE<41>批<EFBFBD><E689B9>唳遬蝷箇<E89DB7><E7AE87>笔<EFBFBD>IP嚗?EXTRACTION_SERVICE_URL=http://172.17.10.5:8000
|
||
```
|
||
|
||
**2. 蝖株恕Python<6F>滚𦛚<E6BB9A>臬炏餈鞱<E9A488>**
|
||
```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?Python摨𠉛鍂 <20>?摰硺<E691B0><E7A1BA>𡑒”
|
||
<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>餈鞱<EFBFBD>銝?<3F>?```
|
||
|
||
**3. 蝖株恕摰匧<E691B0>蝏<EFBFBD><E89D8F><EFBFBD>?*
|
||
```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?Python摨𠉛鍂 <20>?蝵𤑳<E89DB5><F0A491B3>滨蔭 <20>?摰匧<E691B0>蝏?<3F>亦<EFBFBD>閫<EFBFBD><E996AB>嚗𡁜<E59A97>霈禽PC<50><43>挪<EFBFBD>?8000蝡臬藁
|
||
```
|
||
|
||
**4. 瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>餈鮋<E9A488>𡁏<EFBFBD>?*
|
||
```bash
|
||
# <20>沐ode.js<6A>𡒊垢摰孵膥銝剜<E98A9D>銵䕘<E98AB5><E49598>朞<EFBFBD>SAE Webshell嚗㚁<E59A97>
|
||
curl http://172.17.x.x:8000/api/health
|
||
```
|
||
|
||
---
|
||
|
||
### <20>桅<EFBFBD> 5嚗䥪DF<44>𣂼<EFBFBD>頞<EFBFBD>𧒄
|
||
|
||
**<2A><>𠶖**嚗?```
|
||
<EFBFBD>𡒊垢<EFBFBD>亙<EFBFBD>嚗鑹equest timeout after 300s
|
||
Python<EFBFBD>亙<EFBFBD>嚗䥪rocessing large PDF...
|
||
```
|
||
|
||
**<2A>笔<EFBFBD>**嚗?- <20><>辣餈<E8BEA3>之嚗? 50MB嚗?- PDF<44><46>鉄憭折<E686AD><E68A98>曄<EFBFBD>
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?
|
||
**1. 憓𧼮<E68693>頞<EFBFBD>𧒄<EFBFBD>園𡢿**
|
||
```bash
|
||
# Node.js<6A>𡒊垢<F0A1928A>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
EXTRACTION_TIMEOUT=600 # 10<31><30><EFBFBD>
|
||
```
|
||
|
||
**2. <20>𣂼<EFBFBD><F0A382BC><EFBFBD>辣憭批<E686AD>**
|
||
```python
|
||
# Python<6F>滚𦛚嚗饢ain.py
|
||
MAX_FILE_SIZE = 50 * 1024 * 1024 # 50MB
|
||
|
||
@app.post("/api/extract/pdf")
|
||
async def extract_pdf(file: UploadFile):
|
||
if file.size > MAX_FILE_SIZE:
|
||
raise HTTPException(status_code=413, detail="File too large")
|
||
```
|
||
|
||
**3. 隡睃<E99AA1><E79D83>𣂼<EFBFBD><F0A382BC>餉<EFBFBD>**
|
||
```python
|
||
# 頝唾<E9A09D><E594BE>曄<EFBFBD>憿萸<E686BF><E890B8><EFBFBD>蝻拙㦛<E68B99><E3A69B><EFBFBD>
|
||
```
|
||
|
||
---
|
||
|
||
### <20>桅<EFBFBD> 6嚗𡁜<E59A97>摮䀹滯<E480B9>綽<EFBFBD>OOM嚗?
|
||
**<2A><>𠶖**嚗?```
|
||
摰孵膥<EFBFBD>芸𢆡<EFBFBD>滚鍳
|
||
<EFBFBD>亙<EFBFBD><EFBFBD>曄內嚗鐗illed (signal 9)
|
||
摰硺<EFBFBD><EFBFBD>烐綉嚗𡁜<EFBFBD>摮䀝蝙<EFBFBD>函<EFBFBD> > 95%
|
||
```
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?
|
||
**1. 憓𧼮<E68693><F0A7BCAE><EFBFBD><EFBFBD><EFBFBD>滨蔭**
|
||
```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?摨𠉛鍂<F0A0899B>滨蔭 <20>?閫<>聢
|
||
<EFBFBD><EFBFBD><EFBFBD>嚗?GB <20>?4GB
|
||
```
|
||
|
||
**2. 隡睃<E99AA1>隞<EFBFBD><E99A9E>嚗<EFBFBD><E59A97>撘誩<E69298><E8AAA9><EFBFBD><EFBFBD>**
|
||
```python
|
||
# 銝滩<E98A9D>銝<EFBFBD>甈⊥<E79488>批<EFBFBD>頧賣㟲銝芣<E98A9D>隞嗅<E99A9E><E59785><EFBFBD><EFBFBD>
|
||
with open(pdf_path, 'rb') as f:
|
||
for chunk in read_in_chunks(f):
|
||
process(chunk)
|
||
```
|
||
|
||
**3. <20>𣂼<EFBFBD>撟嗅<E6929F>霂瑟<E99C82>**
|
||
```python
|
||
# main.py
|
||
from fastapi import FastAPI
|
||
from starlette.middleware.base import BaseHTTPMiddleware
|
||
|
||
app = FastAPI()
|
||
# <20>𣂼<EFBFBD>撟嗅<E6929F>餈墧𦻖<E5A2A7>?app.add_middleware(ConnectionLimitMiddleware, max_connections=10)
|
||
```
|
||
|
||
---
|
||
|
||
## <20><><EFBFBD>
|
||
|
||
### A. 敹恍<E695B9>笔𦶢隞文<E99A9E><E69687>?
|
||
**<2A>亦<EFBFBD>摨𠉛鍂靽⊥<E99DBD>**嚗?```bash
|
||
# <20>輸<EFBFBD>鈭飈LI
|
||
aliyun sae DescribeApplicationStatus --AppId <app-id>
|
||
```
|
||
|
||
**<2A>亦<EFBFBD>摰硺<E691B0><E7A1BA>𡑒”**嚗?```bash
|
||
# <20>輸<EFBFBD>鈭飈LI
|
||
aliyun sae DescribeApplicationInstances --AppId <app-id>
|
||
```
|
||
|
||
**<2A>滚鍳摨𠉛鍂**嚗?```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>滚鍳摨𠉛鍂
|
||
```
|
||
|
||
**<2A>亦<EFBFBD>摰墧𧒄<E5A2A7>亙<EFBFBD>**嚗?```
|
||
SAE<EFBFBD>批<EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>亙<EFBFBD><E4BA99>亥砭 <20>?摰墧𧒄<E5A2A7>亙<EFBFBD>
|
||
```
|
||
|
||
---
|
||
|
||
### B. <20>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>滨蔭皜<E894AD><E79A9C>
|
||
|
||
| <20>㗛<EFBFBD><E3979B>?| 敹<><E695B9> | 暺䁅恕<E48185>?| 霂湔<E99C82> |
|
||
|--------|-----|--------|------|
|
||
| `LOG_LEVEL` | <20>?| `INFO` | <20>亙<EFBFBD>蝥批<E89DA5>嚗㇄EBUG/INFO/WARNING/ERROR嚗?|
|
||
| `TEMP_DIR` | <20>?| `/tmp/extraction_service` | 銝湔𧒄<E6B994><F0A79284>辣<EFBFBD>桀<EFBFBD> |
|
||
| `TZ` | <20>?| `UTC` | <20>嗅躹嚗<E8BAB9>遣霈?`Asia/Shanghai`嚗?|
|
||
| `SERVICE_NAME` | <20>?| - | <20>滚𦛚<E6BB9A>滨妍嚗<E5A68D>鍂鈭擧𠯫敹埈<E695B9>霂<EFBFBD><E99C82> |
|
||
| `SERVICE_VERSION` | <20>?| - | <20>滚𦛚<E6BB9A><F0A69B9A>𧋦嚗<F0A78BA6>鍂鈭擧𠯫敹埈<E695B9>霂<EFBFBD><E99C82> |
|
||
| `OSS_ACCESS_KEY_ID` | <20>?| - | OSS霈輸䔮撖<E494AE>𤨎ID |
|
||
| `OSS_ACCESS_KEY_SECRET` | <20>?| - | OSS霈輸䔮撖<E494AE>𤨎Secret |
|
||
| `OSS_BUCKET` | <20>?| - | OSS Bucket<65>滨妍 |
|
||
| `OSS_ENDPOINT` | <20>?| - | OSS Endpoint嚗<74>遣霈桀<E99C88>蝵𡢅<E89DB5> |
|
||
|
||
---
|
||
|
||
### C. <20>函蔡璉<E894A1><E79289>交<EFBFBD><E4BAA4>?
|
||
**<2A>函蔡<E587BD>?*嚗?- [ ] 蝖株恕Docker<65>𨅯<EFBFBD>撌脫綫<E884AB><E7B6AB>秐ACR
|
||
- [ ] 蝖株恕VPC<50><43>Switch<63><68><EFBFBD><EFBFBD>函<EFBFBD>ID
|
||
- [ ] 蝖株恕OSS AccessKey<65>㗇<EFBFBD>
|
||
- [ ] 蝖株恕SAE<41>賢<EFBFBD>蝛粹𡢿撌脣<E6928C>撱?
|
||
**<2A>函蔡銝?*嚗?- [ ] <20>𨅯<EFBFBD><F0A885AF>啣<EFBFBD>雿輻鍂VPC<50><43><EFBFBD><EFBFBD>啣<EFBFBD>
|
||
- [ ] 摰硺<E691B0><E7A1BA>?= 1嚗<31><E59A97><EFBFBD>?嚗?- [ ] 摰孵膥蝡臬藁 = 8000
|
||
- [ ] <20>亙熒璉<E78692><E79289>亥楝敺?= `/api/health`
|
||
- [ ] <20>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>滨蔭摰峕㟲
|
||
|
||
**<2A>函蔡<E587BD>?*嚗?- [ ] 摨𠉛鍂<F0A0899B>嗆<EFBFBD>?= 餈鞱<E9A488>銝?- [ ] <20>亙熒璉<E78692><E79289>仿<EFBFBD>朞<EFBFBD>
|
||
- [ ] <20>亙<EFBFBD><E4BA99>曄內<E69B84>滚𦛚甇<F0A69B9A>虜<EFBFBD>臬𢆡
|
||
- [ ] 霈啣<E99C88><E595A3><EFBFBD><EFBFBD>IP<49>啣<EFBFBD>
|
||
- [ ] <20>湔鰵Node.js<6A>𡒊垢<F0A1928A>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
|
||
---
|
||
|
||
### D. <20>鞉𧋦憸<F0A78BA6>摯
|
||
|
||
**瘚贝<E7989A><E8B49D>臬<EFBFBD>嚗<EFBFBD>蝠<EFBFBD>讐<EFBFBD>SAE嚗?*嚗?```
|
||
閫<EFBFBD>聢嚗?<3F>?GB <20> 1摰硺<E691B0>
|
||
韐寧鍂嚗𡁶漲 瞼60/<2F>?```
|
||
|
||
**隡睃<E99AA1>撱箄悅**嚗?- 瘚贝<E7989A><E8B49D>嗆挾<E59786>臭誑<E887AD>见𢆡<E8A781>𨀣迫摨𠉛鍂嚗<E98D82><E59A97>甇W<E79487>銝滩恣韐對<E99F90>
|
||
- 憭𣈯𡢿<F0A388AF>硋𪂹<E7A18B>怠<EFBFBD>甇W<E79487><EFBCB7>刻<EFBFBD><E588BB><EFBFBD><EFBFBD><EFBFBD>?- <20>煺漣<E785BA>臬<EFBFBD>撱箄悅雿輻鍂<E8BCBB><E98D82>僑<EFBFBD><E58391><EFBFBD>隡䀹<E99AA1>
|
||
|
||
---
|
||
|
||
### E. <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
|
||
|
||
- [<5B>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md) - <20><><EFBFBD>㕑<EFBFBD>皞鞾<E79A9E><E99EBE>䰻銵?- [Python敺格<E695BA><E6A0BC>?SAE摰孵膥<E5ADB5>函蔡<E587BD><E894A1><EFBFBD>](./04-Python敺格<E695BA><E6A0BC>?SAE摰孵膥<E5ADB5>函蔡<E587BD><E894A1><EFBFBD>.md) - <20><><EFBFBD>舀沲<E88880><E6B2B2>祕閫?- [敹恍<E695B9>罸<EFBFBD>蝵淞OP](./01-敹恍<E695B9>罸<EFBFBD>蝵淞OP-<2D>嗅抅蝖<E68A85><E89D96>?md) - 摰峕㟲<E5B395>函蔡瘚<E894A1><E7989A>
|
||
|
||
---
|
||
|
||
**<2A><>﹝蝏湔擪**嚗?- <20>𥕦遣<F0A595A6>園𡢿嚗?024-12-24
|
||
- <20><><EFBFBD>擧凒<E693A7>堆<EFBFBD>2024-12-24
|
||
- 銝𧢲活摰⊥䰻嚗?025-01-24
|
||
|
||
---
|
||
|
||
**<2A>函蔡摰峕<E691B0><E5B395>𠬍<EFBFBD>霂瑁扇敶蓥誑銝衤縑<E8A1A4>?*嚗?
|
||
```
|
||
<EFBFBD>函蔡<EFBFBD>園𡢿嚗?024-12-24 19:43
|
||
<EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD>啣<EFBFBD>嚗冴ttp://172.17.173.66:8000
|
||
擐𡝗活<EFBFBD>亙熒璉<EFBFBD><EFBFBD>仿<EFBFBD>朞<EFBFBD><EFBFBD>園𡢿嚗?024-12-24 19:44
|
||
SAE摨𠉛鍂<EFBFBD>滨妍嚗䮝ython-extraction-test
|
||
摨𠉛鍂蝐餃<EFBFBD>嚗朞蝠<EFBFBD>讐<EFBFBD>摨𠉛鍂
|
||
閫<EFBFBD>聢<EFBFBD>滨蔭嚗?<3F>?GB <20> 1摰硺<E691B0>
|
||
<EFBFBD>函蔡<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>𣂼<EFBFBD>
|
||
憭<EFBFBD>釣嚗?- 閫<><E996AB>鈭<EFBFBD>CR<43>𨅯<EFBFBD><F0A885AF>匧<EFBFBD><E58CA7><EFBFBD><EFBFBD><EFBFBD>桅<EFBFBD>嚗<EFBFBD><E59A97>蝵桐<E89DB5><E6A190>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>嚗?- 閫<><E996AB>鈭<EFBFBD><E988AD><EFBFBD>𤩺<EFBFBD>蝑暸䔮憸矋<E686B8><E79F8B><EFBFBD><EFBFBD>鈭?v1.0<EFBFBD><EFBFBD>𧋦嚗?- 摨𠉛鍂甇<E98D82>虜餈鞱<E9A488>嚗?銝沿vicorn worker餈𤤿<E9A488>
|
||
- OpenBLAS霅血<E99C85><E8A180>臬蕭<E887AC>伐<EFBFBD>銝滚蔣<E6BB9A>滚<EFBFBD><E6BB9A>踝<EFBFBD>
|
||
```
|
||
|
||
---
|
||
|
||
> **<2A>鞟內**嚗𡁻<E59A97>蝵脣<E89DB5><E884A3>𣂼<EFBFBD>嚗諹窈<E8ABB9>𦠜𧒄<F0A6A09C>湔鰵 [<5B>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md](./00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md) 銝剔<E98A9D><E58994><EFBFBD><EFBFBD><EFBFBD>啣<EFBFBD>嚗?
|