Skip to content

Commit 1533628

Browse files
committed
feat: ai assisted renaming
1 parent 31c3376 commit 1533628

File tree

2 files changed

+38
-35
lines changed

2 files changed

+38
-35
lines changed

packages/ai/index.ts

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import OpenAI, { ClientOptions } from 'openai'
2+
import ora from 'ora'
23

34
import {
45
PARSE_ELEMENTS_CONTEXT,
56
GET_ELEMENT_SELECTORS_CONTEXT,
67
HELP_CONTEXT
78
} from './context'
8-
import { isObject, log, logStart, logSuccess } from '../shared'
9+
import { isObject } from '../shared'
910

1011
type OpenAIChatModel =
1112
| 'gpt-4-0125-preview'
@@ -26,75 +27,75 @@ type OpenAIChatModel =
2627
| 'gpt-3.5-turbo-0125'
2728
| 'gpt-3.5-turbo-16k-0613'
2829

29-
interface CreateXCrawlOpenAIConfig {
30+
interface CreateCrawlOpenAIConfig {
3031
defaultModel?: {
3132
chatModel: OpenAIChatModel
3233
}
3334
clientOptions?: ClientOptions
3435
}
3536

36-
interface XCrawlOpenAICommonAPIOtherOption {
37+
interface CrawlOpenAICommonAPIOtherOption {
3738
model?: OpenAIChatModel
3839
}
3940

40-
interface XCrawlOpenAIRunChatOption {
41+
interface CrawlOpenAIRunChatOption {
4142
model: OpenAIChatModel | undefined
4243
context: string
4344
HTMLContent: string
4445
userContent: string
4546
responseFormatType: 'text' | 'json_object'
4647
}
4748

48-
interface XCrawlOpenAIParseElementsContentOptions {
49+
interface CrawlOpenAIParseElementsContentOptions {
4950
message: string
5051
}
5152

52-
interface XCrawlOpenAIGetElementSelectorsContentOptions {
53+
interface CrawlOpenAIGetElementSelectorsContentOptions {
5354
message: string
5455
pathMode: 'default' | 'strict'
5556
}
5657

57-
interface XCrawlOpenAIGetElementSelectorsResult {
58+
interface CrawlOpenAIGetElementSelectorsResult {
5859
selectors: string
5960
type: 'single' | 'multiple' | 'none'
6061
}
6162

62-
interface XCrawlOpenAIParseElementsResult<T extends Record<string, string>> {
63+
interface CrawlOpenAIParseElementsResult<T extends Record<string, string>> {
6364
elements: T[]
6465
type: 'single' | 'multiple' | 'none'
6566
}
6667

67-
interface XCrawlOpenAIApp {
68+
interface CrawlOpenAIApp {
6869
parseElements<T extends Record<string, string>>(
6970
HTML: string,
70-
content: string | XCrawlOpenAIParseElementsContentOptions,
71-
option?: XCrawlOpenAICommonAPIOtherOption
72-
): Promise<XCrawlOpenAIParseElementsResult<T>>
71+
content: string | CrawlOpenAIParseElementsContentOptions,
72+
option?: CrawlOpenAICommonAPIOtherOption
73+
): Promise<CrawlOpenAIParseElementsResult<T>>
7374

7475
getElementSelectors(
7576
HTML: string,
76-
content: string | XCrawlOpenAIGetElementSelectorsContentOptions,
77-
option?: XCrawlOpenAICommonAPIOtherOption
78-
): Promise<XCrawlOpenAIGetElementSelectorsResult>
77+
content: string | CrawlOpenAIGetElementSelectorsContentOptions,
78+
option?: CrawlOpenAICommonAPIOtherOption
79+
): Promise<CrawlOpenAIGetElementSelectorsResult>
7980

8081
help(
8182
content: string,
82-
option?: XCrawlOpenAICommonAPIOtherOption
83+
option?: CrawlOpenAICommonAPIOtherOption
8384
): Promise<string>
8485

8586
custom(): OpenAI
8687
}
8788

88-
export function createXCrawlOpenAI(
89-
config: CreateXCrawlOpenAIConfig = {}
90-
): XCrawlOpenAIApp {
89+
export function createCrawlOpenAI(
90+
config: CreateCrawlOpenAIConfig = {}
91+
): CrawlOpenAIApp {
9192
const { defaultModel, clientOptions } = config
9293

9394
const openai = new OpenAI(clientOptions)
9495
const chatDefaultModel: OpenAIChatModel =
9596
defaultModel?.chatModel ?? 'gpt-3.5-turbo'
9697

97-
async function runChat<T>(option: XCrawlOpenAIRunChatOption): Promise<T> {
98+
async function runChat<T>(option: CrawlOpenAIRunChatOption): Promise<T> {
9899
const {
99100
model = chatDefaultModel,
100101
context,
@@ -103,7 +104,9 @@ export function createXCrawlOpenAI(
103104
responseFormatType
104105
} = option
105106

106-
log(logStart(`AI is answering your question, please wait a moment`))
107+
const spinner = ora(
108+
`AI is answering your question, please wait a moment`
109+
).start()
107110
const completion = await openai.chat.completions.create({
108111
model,
109112
messages: [
@@ -114,7 +117,7 @@ export function createXCrawlOpenAI(
114117
response_format: { type: responseFormatType },
115118
temperature: 0.1
116119
})
117-
log(logSuccess(`AI has completed your question`))
120+
spinner.succeed(`AI has completed your question`)
118121

119122
const content = completion.choices[0].message.content
120123
const result =
@@ -123,25 +126,25 @@ export function createXCrawlOpenAI(
123126
return result
124127
}
125128

126-
const app: XCrawlOpenAIApp = {
129+
const app: CrawlOpenAIApp = {
127130
async parseElements<T extends Record<string, string>>(
128131
HTML: string,
129-
content: string | XCrawlOpenAIParseElementsContentOptions,
130-
option: XCrawlOpenAICommonAPIOtherOption = {}
131-
): Promise<XCrawlOpenAIParseElementsResult<T>> {
132+
content: string | CrawlOpenAIParseElementsContentOptions,
133+
option: CrawlOpenAICommonAPIOtherOption = {}
134+
): Promise<CrawlOpenAIParseElementsResult<T>> {
132135
const { model } = option
133136

134137
let coderContent: string = ''
135138
if (isObject(content)) {
136139
coderContent = JSON.stringify(content)
137140
} else {
138-
const obj: XCrawlOpenAIParseElementsContentOptions = {
141+
const obj: CrawlOpenAIParseElementsContentOptions = {
139142
message: content
140143
}
141144
coderContent = JSON.stringify(obj)
142145
}
143146

144-
const result = await runChat<XCrawlOpenAIParseElementsResult<T>>({
147+
const result = await runChat<CrawlOpenAIParseElementsResult<T>>({
145148
model,
146149
context: PARSE_ELEMENTS_CONTEXT,
147150
HTMLContent: HTML,
@@ -154,23 +157,23 @@ export function createXCrawlOpenAI(
154157

155158
async getElementSelectors(
156159
HTML: string,
157-
content: string | XCrawlOpenAIGetElementSelectorsContentOptions,
158-
option: XCrawlOpenAICommonAPIOtherOption = {}
159-
): Promise<XCrawlOpenAIGetElementSelectorsResult> {
160+
content: string | CrawlOpenAIGetElementSelectorsContentOptions,
161+
option: CrawlOpenAICommonAPIOtherOption = {}
162+
): Promise<CrawlOpenAIGetElementSelectorsResult> {
160163
const { model } = option
161164

162165
let coderContent: string = ''
163166
if (isObject(content)) {
164167
coderContent = JSON.stringify(content)
165168
} else {
166-
const obj: XCrawlOpenAIGetElementSelectorsContentOptions = {
169+
const obj: CrawlOpenAIGetElementSelectorsContentOptions = {
167170
message: content,
168171
pathMode: 'default'
169172
}
170173
coderContent = JSON.stringify(obj)
171174
}
172175

173-
const result = await runChat<XCrawlOpenAIGetElementSelectorsResult>({
176+
const result = await runChat<CrawlOpenAIGetElementSelectorsResult>({
174177
model,
175178
context: GET_ELEMENT_SELECTORS_CONTEXT,
176179
HTMLContent: HTML,
@@ -183,7 +186,7 @@ export function createXCrawlOpenAI(
183186

184187
async help(
185188
content: string,
186-
option: XCrawlOpenAICommonAPIOtherOption = {}
189+
option: CrawlOpenAICommonAPIOtherOption = {}
187190
): Promise<string> {
188191
const { model } = option
189192

packages/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export { createCrawl } from './crawl'
2-
export { createXCrawlOpenAI } from './ai'
2+
export { createCrawlOpenAI } from './ai'

0 commit comments

Comments
 (0)