Skip to content

Commit 2d00017

Browse files
committed
feat(adk): expose callable provider
1 parent fdc145d commit 2d00017

3 files changed

Lines changed: 19 additions & 22 deletions

File tree

apps/expo-example/src/components/adapters/adkSetupAdapter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const createAdkLanguageSetupAdapter = (
2727
'You are a helpful assistant in the Callstack React Native AI demo app.',
2828
availableTools: tools,
2929
})
30-
const model = provider.languageModel()
30+
const model = provider()
3131

3232
return {
3333
model,

packages/adk/README.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,8 @@ Then run `npx expo prebuild --clean` so the native Android project picks up the
4141
import { adk } from '@react-native-ai/adk'
4242
import { generateText } from 'ai'
4343

44-
const model = adk.languageModel()
45-
4644
const { text } = await generateText({
47-
model,
45+
model: adk(),
4846
prompt: 'What time is it in New York?',
4947
})
5048
```
@@ -72,7 +70,7 @@ Pass file parts in user messages using the standard AI SDK prompt format:
7270
import { generateText } from 'ai'
7371

7472
const { text } = await generateText({
75-
model: adk.languageModel(),
73+
model: adk(),
7674
messages: [
7775
{
7876
role: 'user',
@@ -105,10 +103,8 @@ const provider = createAdkProvider({
105103
instruction: 'You are a helpful assistant.',
106104
})
107105

108-
const model = provider.languageModel()
109-
110106
const { text } = await generateText({
111-
model,
107+
model: provider(),
112108
prompt: 'Summarize on-device AI in one sentence.',
113109
})
114110
```
@@ -163,7 +159,7 @@ if (!ready) {
163159
}
164160

165161
await provider.prepareNano()
166-
const model = provider.languageModel()
162+
const model = provider()
167163
```
168164

169165
Both checks are cheap native calls (no model download). Safe to cache at app startup and re-check after resume.
@@ -194,7 +190,7 @@ const provider = createAdkProvider({
194190
})
195191

196192
const { text } = await generateText({
197-
model: provider.languageModel(),
193+
model: provider(),
198194
tools: { getCurrentTime },
199195
prompt: 'What time is it in Warsaw?',
200196
})

packages/adk/src/ai-sdk.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,19 @@ export function createAdkProvider(
7373
options: AdkProviderOptions = {}
7474
): AdkProvider {
7575
const createLanguageModel = () => new AdkChatLanguageModel(options)
76-
77-
return Object.assign(() => createLanguageModel(), {
78-
languageModel: createLanguageModel,
79-
isNanoSupported: () => checkNanoSupported(),
80-
isAvailable: async (modelType: AdkModelType = 'gemini') => {
81-
if (modelType === 'genai-nano' && !(await checkNanoSupported())) {
82-
return false
83-
}
84-
return getNativeAdkEngine().isAvailable(modelType).then(Boolean)
85-
},
86-
prepareNano: () => getNativeAdkEngine().prepareNano(),
87-
})
76+
const provider = function () {
77+
return createLanguageModel()
78+
}
79+
provider.languageModel = createLanguageModel
80+
provider.isNanoSupported = () => checkNanoSupported()
81+
provider.isAvailable = async (modelType: AdkModelType = 'gemini') => {
82+
if (modelType === 'genai-nano' && !(await checkNanoSupported())) {
83+
return false
84+
}
85+
return getNativeAdkEngine().isAvailable(modelType).then(Boolean)
86+
}
87+
provider.prepareNano = () => getNativeAdkEngine().prepareNano()
88+
return provider
8889
}
8990

9091
export const adk = createAdkProvider()

0 commit comments

Comments
 (0)