Skip to content

Commit

Permalink
Separated profile from config.yaml and handled it as an independent file
Browse files Browse the repository at this point in the history
  • Loading branch information
kznrluk committed May 18, 2023
1 parent cfacc3f commit d2bb8e0
Show file tree
Hide file tree
Showing 10 changed files with 305 additions and 212 deletions.
74 changes: 31 additions & 43 deletions README-JA.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,13 @@ $ aski
## オプション

```
- `-h, --help`: ヘルプメッセージを表示します。
- `-p, --profile`: この会話で使用するプロファイルを選択します。プロファイルは、.aski/config.yamlファイルで定義されます。
- `-f, --file`: 会話とともに送信するファイルを指定します。
- `-c, --content`: 対話モードを利用せず、引数のコンテンツの回答を出力してプログラムを終了します。他アプリケーションとの連携に便利です。
- `-r, --restore`: 会話履歴をヒストリファイルから復元します。このオプションを使用すると、以前の会話を続けることができます。前方一致。
- `--rest`: REST APIで通信します。ストリーミングが不安定な場合や、適切な応答が受信できない場合に便利です。
- `-h, --help` : ヘルプメッセージを表示します。
- `-p, --profile` : この会話で使用するプロファイルを選択します。
プロファイルは.aski/profilesディレクトリ内のファイル名を指定するか、任意の場所のYAMLファイルを直接指定することができます。
- `-f, --file` : 会話とともに送信するファイルを指定します。
- `-c, --content` : 対話モードを利用せず、引数のコンテンツの回答を出力してプログラムを終了します。他アプリケーションとの連携に便利です。
- `-r, --restore` : 会話履歴をヒストリファイルから復元します。このオプションを使用すると、以前の会話を続けることができます。前方一致。
- `--rest` : REST APIで通信します。ストリーミングが不安定な場合や、適切な応答が受信できない場合に便利です。
```

## インラインコマンド
Expand Down Expand Up @@ -125,6 +126,14 @@ LinuxのPipe(パイプ)は、UNIX系オペレーティングシステム(L
主にシェル(bash, zsh, etc.)で使用されます。パイプは、縦棒 (`|`) を使ってコマンド間でデータをストリーム化して連携させます。💻
```

## コンフィグ
コンフィグファイルには、現在のプロファイルとOpenAI APIキーが含まれています。プロファイルは `profile` ディレクトリに保存されているyamlファイルです。

```yaml
OpenAIAPIKey: sk-Bs.....................
CurrentProfile: gpt4.yaml
```
## プロファイル
プロファイルを使用することで、異なる会話コンテキストや設定簡単に切り替えることができます。プロファイルには、以下の機能があります。
Expand All @@ -139,10 +148,6 @@ LinuxのPipe(パイプ)は、UNIX系オペレーティングシステム(L
[Models - OpenAI API](https://platform.openai.com/docs/models/chatgpt)
**Current**

現在のプロファイルかどうかを示します。trueに設定されているプロファイルが使用されます。

**AutoSave**
会話履歴を自動的に保存するかどうかを示します。trueに設定されているプロファイルは、会話履歴を自動的に保存します。
Expand All @@ -169,39 +174,22 @@ ChatGPTに送信する際に使用されるパラメーターを上書きしま
[API Reference - OpenAI API](https://platform.openai.com/docs/api-reference/chat/create)

```yaml
OpenAIAPIKey:
Profiles:
- ProfileName: Default
UserName: AskiUser
Model: gpt-3.5-turbo
Current: true
AutoSave: true
Summarize: true
SystemContext: You are a kind and helpful chat AI. Sometimes you may say things that are incorrect, but that is unavoidable.
Messages:
- Role: user
Content: Hi, nice to meet you!
- Role: assistant
Content: Hi, What's your name?
- Role: user
Content: My name is Aski.
- ProfileName: Emoji
UserName: AskiUser
Model: gpt-3.5-turbo
Current: false
AutoSave: true
Summarize: true
SystemContext: |
You are a kind and helpful chat AI.
Sometimes you may say things that are incorrect, but that is unavoidable.
Messages:
- Role: user
Content: Please use a lot of emojis!
- Role: assistant
Content: Ok! I will use a lot of emojis!
CustomParameters:
temperature: 1
stop: ["hello"]
ProfileName: Default
UserName: AskiUser
Model: gpt-3.5-turbo
AutoSave: true
Summarize: true
SystemContext: You are a kind and helpful chat AI. Sometimes you may say things that are incorrect, but that is unavoidable.
Messages:
- Role: user
Content: Hi, nice to meet you!
- Role: assistant
Content: Hi, What's your name?
- Role: user
Content: My name is Aski.
CustomParameters:
temperature: 1
stop: ["hello"]
```

SystemContextは常に最初に送信され、UserMessagesはその次に送信されます。ファイルを指定した際はSystemContextとUserMessagesの間にファイルの情報が添付されます。
Expand Down
74 changes: 31 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,13 @@ By default, it uses a generic profile, unless otherwise specified.
## Options

```
- `-h, --help`: Displays help message.
- `-p, --profile`: Choose the profile to use for this conversation. Profiles are defined in the .aski/config.yaml file.
- `-f, --file`: Specifies a file to send with the conversation.
- `-c, --content`: Outputs the answer for the content of the argument without using the interactive mode and ends the program. Useful for integration with other applications.
- `-r, --restore`: Restores the conversation history from a history file. With this option, you can continue a previous conversation. Forward match.
- `--rest`: Communicate with the REST API. Useful when streaming is unstable or appropriate responses cannot be received.
- `-h, --help` : Displays help message.
- `-p, --profile` : Choose the profile to use for this conversation.
You can specify the file name in the .aski/profiles directory or directly specify a YAML file in any location.
- `-f, --file` : Specifies a file to send with the conversation.
- `-c, --content` : Outputs the answer for the content of the argument without using the interactive mode and ends the program. Useful for integration with other applications.
- `-r, --restore` : Restores the conversation history from a history file. With this option, you can continue a previous conversation. Forward match.
- `--rest` : Communicate with the REST API. Useful when streaming is unstable or appropriate responses cannot be received.
```

## Inline Commands
Expand Down Expand Up @@ -127,6 +128,14 @@ A pipe in Linux is a concept in UNIX-based operating systems (such as Linux and
It is mainly used in shells (bash, zsh, etc.). Pipes use a vertical bar (`|`) to stream data between commands, enabling them to work together efficiently.💻
```

## Configuration
The configuration file includes the current profile and OpenAI API key. Profiles are stored as YAML files in the `profile` directory.

```yaml
OpenAIAPIKey: sk-Bs.....................
CurrentProfile: gpt4.yaml
```
## Profiles
By using profiles, you can easily switch between different conversation contexts and settings. Profiles have the following features.
Expand All @@ -141,10 +150,6 @@ The name of the model you want to use. It must be a valid value that can be used
[Models - OpenAI API](https://platform.openai.com/docs/models/chatgpt)
**Current**

Indicates whether the profile is currently active. Profiles set to true will be used.

**AutoSave**
Indicates whether to automatically save the conversation history. Profiles set to true will automatically save the conversation history.
Expand All @@ -171,39 +176,22 @@ Please refer to the ChatGPT API Reference for the available parameters. In gener
[API Reference - OpenAI API](https://platform.openai.com/docs/api-reference/chat/create)

```yaml
OpenAIAPIKey:
Profiles:
- ProfileName: Default
UserName: AskiUser
Model: gpt-3.5-turbo
Current: true
AutoSave: true
Summarize: true
SystemContext: You are a kind and helpful chat AI. Sometimes you may say things that are incorrect, but that is unavoidable.
Messages:
- Role: user
Content: Hi, nice to meet you!
- Role: assistant
Content: Hi, What's your name?
- Role: user
Content: My name is Aski.
- ProfileName: Emoji
UserName: AskiUser
Model: gpt-3.5-turbo
Current: false
AutoSave: true
Summarize: true
SystemContext: |
You are a kind and helpful chat AI.
Sometimes you may say things that are incorrect, but that is unavoidable.
Messages:
- Role: user
Content: Please use a lot of emojis!
- Role: assistant
Content: Ok! I will use a lot of emojis!
CustomParameters:
temperature: 1
stop: ["hello"]
ProfileName: Default
UserName: AskiUser
Model: gpt-3.5-turbo
AutoSave: true
Summarize: true
SystemContext: You are a kind and helpful chat AI. Sometimes you may say things that are incorrect, but that is unavoidable.
Messages:
- Role: user
Content: Hi, nice to meet you!
- Role: assistant
Content: Hi, What's your name?
- Role: user
Content: My name is Aski.
CustomParameters:
temperature: 1
stop: ["hello"]
```

SystemContext is always sent first, followed by UserMessages. If a file is specified, the file information will be attached between the SystemContext and UserMessages.
Expand Down
5 changes: 1 addition & 4 deletions command/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -345,10 +345,7 @@ func editMessage(cv conv.Conversation, sha1 string) (conv.Conversation, bool, er
}

func openEditor(content string) (string, error) {
tempDir, err := config.GetAskiDir()
if err != nil {
return "", fmt.Errorf("failed to get aski directory: %v", err)
}
tempDir := config.MustGetAskiDir()
tmpFile, err := os.CreateTemp(tempDir, "aski-editor-*.txt")
if err != nil {
return "", fmt.Errorf("failed to create a temp file: %v", err)
Expand Down
Loading

0 comments on commit d2bb8e0

Please sign in to comment.