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.
eino-examples/quickstart/chatwithdoc/docs/ch01_chatmodel_agent_consol...

84 lines
2.1 KiB
Markdown

This file contains ambiguous Unicode characters!

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 与 MessageConsole"
---
本章目标:用最小代码调用一次 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
### 方式 AOpenAI默认
需要配置(最小集合):
- `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"
```
### 方式 BArk
需要配置:
- `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(...)`