You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
---
title: "第一章: ChatModel 与 Message( Console) "
---
本章目标:用最小代码调用一次 ChatModel( 支持流式输出) , 并掌握 `schema.Message` 的基本用法。
## 代码位置
- 入口代码:[cmd/ch01/main.go](file:///Users/bytedance/github/eino/examples/quickstart/chatwithdoc/cmd/ch01/main.go)
## 前置条件
- Go 版本:与本目录 `go.mod` 一致
- 一个可调用的 ChatModel( 默认使用 OpenAI; 也支持 Ark)
本 quickstart 复用 `github.com/cloudwego/eino-examples/adk/common/model.NewChatModel()` 来创建模型,它会读取环境变量选择不同 provider:
### 方式 A: OpenAI( 默认)
需要配置(最小集合):
- `OPENAI_API_KEY`
- `OPENAI_MODEL`
可选:
- `OPENAI_BASE_URL` (例如走代理或兼容 OpenAI 协议的服务)
- `OPENAI_BY_AZURE=true` (如使用 Azure OpenAI)
示例:
```bash
export OPENAI_API_KEY = "..."
export OPENAI_MODEL = "gpt-4.1-mini"
```
### 方式 B: Ark
需要配置:
- `MODEL_TYPE=ark`
- `ARK_API_KEY`
- `ARK_MODEL`
可选:
- `ARK_BASE_URL`
示例:
```bash
export MODEL_TYPE = "ark"
export ARK_API_KEY = "..."
export ARK_MODEL = "..."
```
## 关键概念(只讲本章用到的)
- `schema.Message` :对话消息。常见角色为 `system/user/assistant/tool` 。本章使用 `system + user` 作为输入。
- `ChatModel` :模型组件,负责基于一组 messages 生成回复。示例中用 `model.NewChatModel()` 创建。
## 运行
在本章里我们用 Console 直接运行,不启动 Web 服务。
```bash
cd /Users/bytedance/github/eino/examples/quickstart/chatwithdoc
go run ./cmd/ch01 -- "用一句话解释 Eino 的 Component 设计解决了什么问题?"
```
你会看到类似输出(流式逐步打印):
```text
[assistant] ...
```
## 入口代码做了什么
按执行顺序:
1. `NewChatModel()` 创建 ChatModel( 从环境变量选择 OpenAI/Ark)
2. 构造输入 messages: `SystemMessage(instruction)` + `UserMessage(query)`
3. 优先尝试 `ChatModel.Stream(...)` 并打印流式输出;若不支持则回退到 `ChatModel.Generate(...)`