What the documents look like
Wholesale stall trading runs on purchase slips, handwritten sales notes, stall lease contracts and payment receipts. Market pricing comes from the wholesale market itself, payment often arrives through WeChat, and shipping follows a logistics consignment note. These materials sit partly on paper and partly inside chat records, and they update both daily and per transaction.
For product and marketing copy drafting, the drafting request needs to cite item names, specifications, quantities, price ranges and stall information taken from those materials. The materials themselves do not authorize any promotional wording. The role of model connections and configuration at this step is to let a drafting request reach an enabled language model, and to let a person compare the generated wording against the original material text.
Constraints at the model connections step
Handwriting and formats vary across materials, so key fields must be organized into quotable text before drafting. The system needs at least one language model and one index model to work normally. AI Proxy is a required dependency, and both the App and an Admin service that reuses App/Service configuration must set AIPROXY_API_ENDPOINT and a non-empty AIPROXY_API_TOKEN; missing either one causes startup validation to fail. Legacy OpenAI environment variables or a single-model custom request URL cannot replace these two settings. Model capabilities are checked against the inputs the application actually needs, with multimodal input, tool calling and thinking configuration verified separately. Application parameters are set in the application or node configuration.
Hypothetical exercise sample: on 12 March 2026 a stall operator organizes a batch of spring women's clothing. The material text reads: "Purchase slip states: item knitted cardigan, specification one size, purchased 200 pieces." "Handwritten sales note states: 30 pieces sold on 12 March, unit price 45 yuan." "Stall lease contract states: stall A-12, lease term through February 2027." One draft sentence awaiting judgment is: "All knitted cardigans at this stall are current-season new styles, while stocks last." This sentence makes two claims, that all items are current-season new styles and that stock will end. The material text does not state a seasonal attribute for the styles and does not state a stock termination condition, so the sentence is unsupported.
Configuration and implementation checks
Configuration is checked against this page's sample, and database internals are not copied in as mandatory items for every page.
| Configuration item | Hypothetical starting value for this exercise | Reason for the choice and comparison method |
|---|---|---|
AIPROXY_API_ENDPOINT | AI Proxy service root address | Documentation requires the root address without /v1; compare the entry against the documented format |
AIPROXY_API_TOKEN | Non-empty administrator token matching the server side | Compare against the AI Proxy server configuration and confirm they match |
| Language model enabled | One language model enabled for copy drafting | Compare against the system requirement of at least one language model |
| Index model enabled | One index model enabled | Compare against the system requirement of at least one index model |
| Model capability check | Checked against the text input this sample needs | Compare against model fields such as vision and toolChoice |
| Application parameters | Set in the application or node configuration | Compare against where orchestration actually reads them; do not assume a same-named chat field overrides them |
Three common errors
- Treating "30 pieces sold, unit price 45 yuan" from the material text as a full inventory fact, then writing "while stocks last." The input is the draft sentence plus the material text, the comparison is whether the material states a stock termination condition, and the observable result is that the sentence is unsupported when the material does not state one.
- Entering a complete model request address as
AIPROXY_API_ENDPOINTwith/v1appended. The input is the entered address, the comparison is the documented requirement to enter the root address without/v1, and the observable result is a mismatch with the documented format. - Using an application API key as
AIPROXY_API_TOKEN. The input is the entered token, the comparison is the documented requirement for a non-empty administrator token, and the observable result is a mismatch.
How to verify the setup
- Enter the hypothetical sample material text together with the draft sentence "All knitted cardigans at this stall are current-season new styles, while stocks last." Compare whether the seasonal attribute and the stock termination condition appear in the original text. When the original text does not state them, the sentence is judged unsupported, and it is not judged as a negation or a conflict.
- Enter the configured
AIPROXY_API_ENDPOINTand compare whether it is the AI Proxy service root address without/v1. It passes when the format matches the documentation; when a path is appended, record the mismatch. - Enter the configured
AIPROXY_API_TOKENand compare whether it matches the server-side configuration and is non-empty. It passes when they match; when an application API key is entered, record the mismatch. All three are paper comparisons. No deployment or test has been performed.